Geant4 Cross Reference |
1 /* 1 /* 2 # <<BEGIN-copyright>> 2 # <<BEGIN-copyright>> 3 # <<END-copyright>> 3 # <<END-copyright>> 4 */ 4 */ 5 #ifndef MCGIDI_h_included 5 #ifndef MCGIDI_h_included 6 #define MCGIDI_h_included 6 #define MCGIDI_h_included 7 7 8 #define MCGIDI_VERSION_MAJOR 1 8 #define MCGIDI_VERSION_MAJOR 1 9 #define MCGIDI_VERSION_MINOR 0 9 #define MCGIDI_VERSION_MINOR 0 10 #define MCGIDI_VERSION_PATCHLEVEL 0 10 #define MCGIDI_VERSION_PATCHLEVEL 0 11 11 >> 12 #ifdef WIN32 >> 13 #define M_PI 3.141592653589793238463 >> 14 #endif >> 15 12 #include <GIDI_settings.hh> 16 #include <GIDI_settings.hh> 13 #include <map> 17 #include <map> 14 #include <vector> 18 #include <vector> 15 19 16 #include <statusMessageReporting.h> 20 #include <statusMessageReporting.h> 17 #include <ptwXY.h> 21 #include <ptwXY.h> 18 #include <xDataTOM.h> 22 #include <xDataTOM.h> 19 23 20 #include "MCGIDI_mass.h" 24 #include "MCGIDI_mass.h" 21 #include "MCGIDI_map.h" 25 #include "MCGIDI_map.h" 22 26 23 /* Disable Effective C++ warnings in GIDI code 27 /* Disable Effective C++ warnings in GIDI code. */ 24 #if __INTEL_COMPILER > 1399 28 #if __INTEL_COMPILER > 1399 25 #pragma warning( disable:2021 ) 29 #pragma warning( disable:2021 ) 26 #pragma warning( disable:593 ) 30 #pragma warning( disable:593 ) 27 #pragma warning( disable:111 ) 31 #pragma warning( disable:111 ) 28 #elif __INTEL_COMPILER > 1199 32 #elif __INTEL_COMPILER > 1199 29 #pragma warning( disable:2304 ) 33 #pragma warning( disable:2304 ) 30 #endif 34 #endif 31 35 32 #if defined __cplusplus 36 #if defined __cplusplus 33 extern "C" { 37 extern "C" { 34 namespace GIDI { 38 namespace GIDI { 35 #endif 39 #endif 36 40 37 typedef struct MCGIDI_GammaBranching_s MCGIDI_ 41 typedef struct MCGIDI_GammaBranching_s MCGIDI_GammaBranching; 38 typedef struct MCGIDI_POP_s MCGIDI_POP; 42 typedef struct MCGIDI_POP_s MCGIDI_POP; 39 typedef struct MCGIDI_POPs_s MCGIDI_POPs; 43 typedef struct MCGIDI_POPs_s MCGIDI_POPs; 40 typedef struct MCGIDI_particle_s MCGIDI_partic 44 typedef struct MCGIDI_particle_s MCGIDI_particle; 41 typedef struct MCGIDI_target_s MCGIDI_target; 45 typedef struct MCGIDI_target_s MCGIDI_target; 42 typedef struct MCGIDI_target_heated_info_s MCG 46 typedef struct MCGIDI_target_heated_info_s MCGIDI_target_heated_info; 43 typedef struct MCGIDI_target_heated_sorted_s M 47 typedef struct MCGIDI_target_heated_sorted_s MCGIDI_target_heated_sorted; 44 typedef struct MCGIDI_target_heated_s MCGIDI_t 48 typedef struct MCGIDI_target_heated_s MCGIDI_target_heated; 45 typedef struct MCGIDI_reaction_s MCGIDI_reacti 49 typedef struct MCGIDI_reaction_s MCGIDI_reaction; 46 typedef struct MCGIDI_outputChannel_s MCGIDI_o 50 typedef struct MCGIDI_outputChannel_s MCGIDI_outputChannel; 47 typedef struct MCGIDI_product_s MCGIDI_product 51 typedef struct MCGIDI_product_s MCGIDI_product; 48 typedef struct MCGIDI_distribution_s MCGIDI_di 52 typedef struct MCGIDI_distribution_s MCGIDI_distribution; 49 typedef struct MCGIDI_KalbachMann_s MCGIDI_Kal 53 typedef struct MCGIDI_KalbachMann_s MCGIDI_KalbachMann; 50 typedef struct MCGIDI_KalbachMann_ras_s MCGIDI 54 typedef struct MCGIDI_KalbachMann_ras_s MCGIDI_KalbachMann_ras; 51 typedef struct MCGIDI_pdfOfX_s MCGIDI_pdfOfX; 55 typedef struct MCGIDI_pdfOfX_s MCGIDI_pdfOfX; 52 typedef struct MCGIDI_pdfsOfXGivenW_s MCGIDI_p 56 typedef struct MCGIDI_pdfsOfXGivenW_s MCGIDI_pdfsOfXGivenW; 53 typedef struct MCGIDI_pdfsOfXGivenW_sampled_s 57 typedef struct MCGIDI_pdfsOfXGivenW_sampled_s MCGIDI_pdfsOfXGivenW_sampled; 54 typedef struct MCGIDI_angular_s MCGIDI_angular 58 typedef struct MCGIDI_angular_s MCGIDI_angular; 55 typedef struct MCGIDI_energyWeightedFunctional 59 typedef struct MCGIDI_energyWeightedFunctional_s MCGIDI_energyWeightedFunctional; 56 typedef struct MCGIDI_energyWeightedFunctional 60 typedef struct MCGIDI_energyWeightedFunctionals_s MCGIDI_energyWeightedFunctionals; 57 typedef struct MCGIDI_energyNBodyPhaseSpace_s 61 typedef struct MCGIDI_energyNBodyPhaseSpace_s MCGIDI_energyNBodyPhaseSpace; 58 typedef struct MCGIDI_energy_s MCGIDI_energy; 62 typedef struct MCGIDI_energy_s MCGIDI_energy; 59 typedef struct MCGIDI_energyAngular_s MCGIDI_e 63 typedef struct MCGIDI_energyAngular_s MCGIDI_energyAngular; 60 typedef struct MCGIDI_angularEnergy_s MCGIDI_a 64 typedef struct MCGIDI_angularEnergy_s MCGIDI_angularEnergy; 61 65 62 typedef struct MCGIDI_decaySamplingInfo_s MCGI 66 typedef struct MCGIDI_decaySamplingInfo_s MCGIDI_decaySamplingInfo; 63 typedef struct MCGIDI_productsInfo_s MCGIDI_pr 67 typedef struct MCGIDI_productsInfo_s MCGIDI_productsInfo; 64 typedef struct MCGIDI_productInfo_s MCGIDI_pro 68 typedef struct MCGIDI_productInfo_s MCGIDI_productInfo; 65 typedef struct MCGIDI_sampledProductsData_s MC 69 typedef struct MCGIDI_sampledProductsData_s MCGIDI_sampledProductsData; 66 typedef struct MCGIDI_sampledProductsDatas_s M 70 typedef struct MCGIDI_sampledProductsDatas_s MCGIDI_sampledProductsDatas; 67 71 68 #if defined __cplusplus 72 #if defined __cplusplus 69 } 73 } 70 } 74 } 71 #endif 75 #endif 72 76 73 enum MCGIDI_quantityLookupMode { 77 enum MCGIDI_quantityLookupMode { 74 MCGIDI_quantityLookupMode_pointwise /* 78 MCGIDI_quantityLookupMode_pointwise /**< Pointwise data are used to determine a quantity's value an energy E. */, 75 MCGIDI_quantityLookupMode_grouped /* 79 MCGIDI_quantityLookupMode_grouped /**< Grouped data are used to determine a quantity's value an energy E. */ 76 }; 80 }; 77 81 78 class MCGIDI_quantitiesLookupModes { 82 class MCGIDI_quantitiesLookupModes { 79 83 80 private: 84 private: 81 int mProjectilesPOPID; 85 int mProjectilesPOPID; 82 double mProjectileEnergy; 86 double mProjectileEnergy; 83 int mGroupIndex; 87 int mGroupIndex; 84 double mProjectileEnergyForGroupIndex; 88 double mProjectileEnergyForGroupIndex; 85 double mTemperature; 89 double mTemperature; 86 enum MCGIDI_quantityLookupMode mCrossS 90 enum MCGIDI_quantityLookupMode mCrossSectionMode; 87 enum MCGIDI_quantityLookupMode mMultip 91 enum MCGIDI_quantityLookupMode mMultiplicityMode; 88 92 89 public: 93 public: 90 MCGIDI_quantitiesLookupModes( int proj 94 MCGIDI_quantitiesLookupModes( int projectilesPOPID ); 91 ~MCGIDI_quantitiesLookupModes( ); 95 ~MCGIDI_quantitiesLookupModes( ); 92 96 93 inline double getProjectileEnergy( voi 97 inline double getProjectileEnergy( void ) const { return( mProjectileEnergy ); } 94 void setProjectileEnergy( double e_in 98 void setProjectileEnergy( double e_in ) { mProjectileEnergy = e_in; } 95 99 96 inline int getGroupIndex( void ) const 100 inline int getGroupIndex( void ) const { return( mGroupIndex ); } 97 int setGroupIndex( GIDI_settings const 101 int setGroupIndex( GIDI_settings const &settings, bool encloseOutOfRange ); 98 102 99 inline double getTemperature( void ) c 103 inline double getTemperature( void ) const { return( mTemperature ); } 100 void setTemperature( double temperatur 104 void setTemperature( double temperature ) { mTemperature = temperature; } 101 105 102 enum MCGIDI_quantityLookupMode getMode 106 enum MCGIDI_quantityLookupMode getMode( std::string const &quantity ) const; 103 enum MCGIDI_quantityLookupMode getCros 107 enum MCGIDI_quantityLookupMode getCrossSectionMode( void ) const { return( mCrossSectionMode ); }; 104 std::vector<std::string> getListOfLook 108 std::vector<std::string> getListOfLookupQuanities( ) const; 105 void setMode( std::string const &quant 109 void setMode( std::string const &quantity, enum MCGIDI_quantityLookupMode mode ); 106 void setCrossSectionMode( enum MCGIDI_ 110 void setCrossSectionMode( enum MCGIDI_quantityLookupMode mode ) { mCrossSectionMode = mode; }; 107 void setModeAll( enum MCGIDI_quantityL 111 void setModeAll( enum MCGIDI_quantityLookupMode mode ); 108 }; 112 }; 109 113 110 typedef struct MCGIDI_samplingMultiplicityBias 114 typedef struct MCGIDI_samplingMultiplicityBias_s MCGIDI_samplingMultiplicityBias; 111 115 112 struct MCGIDI_samplingMultiplicityBias_s { 116 struct MCGIDI_samplingMultiplicityBias_s { 113 int PoPID; 117 int PoPID; 114 double multiplicityFactor; 118 double multiplicityFactor; 115 }; 119 }; 116 120 117 class MCGIDI_samplingMethods { 121 class MCGIDI_samplingMethods { 118 122 119 public: 123 public: 120 MCGIDI_samplingMethods( ); 124 MCGIDI_samplingMethods( ); 121 ~MCGIDI_samplingMethods( ); 125 ~MCGIDI_samplingMethods( ); 122 }; 126 }; 123 127 124 class MCGIDI_samplingSettings { 128 class MCGIDI_samplingSettings { 125 129 126 private: // This is use 130 private: // This is user input. 127 enum GIDI::xDataTOM_frame mWantFrame; 131 enum GIDI::xDataTOM_frame mWantFrame; 128 bool mWantVelocities; 132 bool mWantVelocities; 129 double (*mRng)( void * ); 133 double (*mRng)( void * ); 130 void *mRngState; 134 void *mRngState; 131 std::vector<struct MCGIDI_samplingMult 135 std::vector<struct MCGIDI_samplingMultiplicityBias_s> mSamplingMultiplicityBiases; 132 136 133 public: // Temporary v 137 public: // Temporary variables used in MCGIDI sampling routines. 134 enum GIDI::xDataTOM_frame mGotFrame; 138 enum GIDI::xDataTOM_frame mGotFrame; 135 GIDI::MCGIDI_POP *mPoP; 139 GIDI::MCGIDI_POP *mPoP; 136 double mMu; 140 double mMu; 137 double mEp; 141 double mEp; 138 142 139 public: 143 public: 140 MCGIDI_samplingSettings( enum GIDI::xD 144 MCGIDI_samplingSettings( enum GIDI::xDataTOM_frame frame, bool wantVelocities, double (*rng)( void * ), void *rngState ); 141 ~MCGIDI_samplingSettings( ); 145 ~MCGIDI_samplingSettings( ); 142 146 143 inline double getProductMultiplicityBi 147 inline double getProductMultiplicityBias( int PoPID ) const { 144 for( int i1 = 0; i1 < (int) mS 148 for( int i1 = 0; i1 < (int) mSamplingMultiplicityBiases.size( ); ++i1 ) { 145 if( PoPID == mSamplingMult 149 if( PoPID == mSamplingMultiplicityBiases[i1].PoPID ) return( mSamplingMultiplicityBiases[i1].multiplicityFactor ); 146 } 150 } 147 return( 1. ); } 151 return( 1. ); } 148 int setProductMultiplicityBias( GIDI:: 152 int setProductMultiplicityBias( GIDI::statusMessageReporting *smr, int PoPID, double fractor ); 149 }; 153 }; 150 154 151 #if defined __cplusplus 155 #if defined __cplusplus 152 extern "C" { 156 extern "C" { 153 namespace GIDI { 157 namespace GIDI { 154 #endif 158 #endif 155 159 156 enum MCGIDI_transportability { 160 enum MCGIDI_transportability { /**< This enum is used to give the transportability status for a particle in a reaction or target. */ 157 MCGIDI_transportability_unknown, 161 MCGIDI_transportability_unknown, /**< Particle is not a product of this reaction or target. */ 158 MCGIDI_transportability_none, 162 MCGIDI_transportability_none, /**< Particle is a product but has not distribution data. */ 159 MCGIDI_transportability_partial, 163 MCGIDI_transportability_partial, /**< Particle is a product and has some distribution data. */ 160 MCGIDI_transportability_full }; 164 MCGIDI_transportability_full }; /**< Particle is a product and all needed distribution data. */ 161 165 162 #if defined __cplusplus 166 #if defined __cplusplus 163 } 167 } 164 } 168 } 165 #endif 169 #endif 166 170 167 typedef std::map<int, enum GIDI::MCGIDI_transp 171 typedef std::map<int, enum GIDI::MCGIDI_transportability> transportabilitiesMap; 168 172 169 #if defined __cplusplus 173 #if defined __cplusplus 170 extern "C" { 174 extern "C" { 171 namespace GIDI { 175 namespace GIDI { 172 #endif 176 #endif 173 177 174 #define MCGIDI_crossSectionType_grouped 1 178 #define MCGIDI_crossSectionType_grouped 1 175 #define MCGIDI_crossSectionType_pointwise 2 179 #define MCGIDI_crossSectionType_pointwise 2 176 180 177 #define MCGIDI_nullReaction -10001 181 #define MCGIDI_nullReaction -10001 178 182 179 #define MCGIDI_speedOfLight_cm_sec 2.99792458e 183 #define MCGIDI_speedOfLight_cm_sec 2.99792458e10 180 #define MCGIDI_AMU2MeV 931.494028 184 #define MCGIDI_AMU2MeV 931.494028 181 185 182 enum MCGIDI_reactionType { 186 enum MCGIDI_reactionType { 183 MCGIDI_reactionType_unknown_e, 187 MCGIDI_reactionType_unknown_e, /* This should never happen. */ 184 MCGIDI_reactionType_null_e, 188 MCGIDI_reactionType_null_e, /* Only occurs when sampling with from grouped cross sections and the projectile is below threshold. */ 185 MCGIDI_reactionType_elastic_e, 189 MCGIDI_reactionType_elastic_e, /* A nuclear elastic reaction. */ 186 MCGIDI_reactionType_scattering_e, 190 MCGIDI_reactionType_scattering_e, /* A nuclear reaction where the projectile and target are products as well as gammas, 187 191 excluding reactions that are MCGIDI_reactionType_elastic_e and 188 192 MCGIDI_reactionType_nuclearLevelTransition_e. */ 189 MCGIDI_reactionType_nuclearIsomerTransmuta 193 MCGIDI_reactionType_nuclearIsomerTransmutation_e, /* A nuclear that changes N or Z and is not one of the others.*/ 190 MCGIDI_reactionType_nuclearLevelTransition 194 MCGIDI_reactionType_nuclearLevelTransition_e, /* Reaction in which the residual is the same isotope as the target but in a 191 195 different nuclear level. Mainly for meta-stables. */ 192 MCGIDI_reactionType_capture_e, 196 MCGIDI_reactionType_capture_e, /* A nuclear capture reaction. */ 193 MCGIDI_reactionType_fission_e, 197 MCGIDI_reactionType_fission_e, /* A nuclear fission reaction. */ 194 MCGIDI_reactionType_sumOfRemainingOutputCh 198 MCGIDI_reactionType_sumOfRemainingOutputChannels_e, /* ENDF MT 5 reactions. */ 195 MCGIDI_reactionType_atomic_e 199 MCGIDI_reactionType_atomic_e 196 }; 200 }; 197 201 198 enum MCGIDI_channelGenre { MCGIDI_channelGenre 202 enum MCGIDI_channelGenre { MCGIDI_channelGenre_undefined_e, MCGIDI_channelGenre_twoBody_e, MCGIDI_channelGenre_uncorrelated_e, 199 MCGIDI_channelGenre_sumOfRemaining_e, MCGI 203 MCGIDI_channelGenre_sumOfRemaining_e, MCGIDI_channelGenre_twoBodyDecay_e, MCGIDI_channelGenre_uncorrelatedDecay_e }; 200 204 201 enum MCGIDI_productMultiplicityType { MCGIDI_p 205 enum MCGIDI_productMultiplicityType { MCGIDI_productMultiplicityType_invalid_e, MCGIDI_productMultiplicityType_unknown_e, MCGIDI_productMultiplicityType_integer_e, 202 MCGIDI_productMultiplicityType_energyDepen 206 MCGIDI_productMultiplicityType_energyDependent_e, MCGIDI_productMultiplicityType_gammaBranching_e, MCGIDI_productMultiplicityType_mixed_e }; 203 207 204 enum MCGIDI_distributionType { MCGIDI_distribu 208 enum MCGIDI_distributionType { MCGIDI_distributionType_none_e, MCGIDI_distributionType_unknown_e, MCGIDI_distributionType_angular_e, 205 MCGIDI_distributionType_KalbachMann_e, MCG 209 MCGIDI_distributionType_KalbachMann_e, MCGIDI_distributionType_uncorrelated_e, MCGIDI_distributionType_energyAngular_e, 206 MCGIDI_distributionType_angularEnergy_e }; 210 MCGIDI_distributionType_angularEnergy_e }; 207 211 208 enum MCGIDI_angularType { MCGIDI_angularType_i 212 enum MCGIDI_angularType { MCGIDI_angularType_isotropic, MCGIDI_angularType_recoil, MCGIDI_angularType_linear }; 209 213 210 enum MCGIDI_energyType { MCGIDI_energyType_unk 214 enum MCGIDI_energyType { MCGIDI_energyType_unknown, MCGIDI_energyType_primaryGamma, MCGIDI_energyType_discreteGamma, 211 MCGIDI_energyType_linear, MCGIDI_energyTyp 215 MCGIDI_energyType_linear, MCGIDI_energyType_generalEvaporation, MCGIDI_energyType_simpleMaxwellianFission, MCGIDI_energyType_evaporation, 212 MCGIDI_energyType_Watt, MCGIDI_energyT 216 MCGIDI_energyType_Watt, MCGIDI_energyType_MadlandNix, MCGIDI_energyType_NBodyPhaseSpace, MCGIDI_energyType_weightedFunctional }; 213 217 214 extern const char *MCGIDI_productGenre_unknown 218 extern const char *MCGIDI_productGenre_unknown, *MCGIDI_productGenre_twoBody_angular, *MCGIDI_productGenre_twoBody_formFactor, 215 *MCGIDI_productGenre_NBody_angular_energy, 219 *MCGIDI_productGenre_NBody_angular_energy, *MCGIDI_productGenre_NBody_pairProduction; 216 220 217 #define MCGIDI_particleLevel_continuum -1 221 #define MCGIDI_particleLevel_continuum -1 218 #define MCGIDI_particleLevel_sum -2 222 #define MCGIDI_particleLevel_sum -2 219 223 220 struct MCGIDI_GammaBranching_s { 224 struct MCGIDI_GammaBranching_s { 221 MCGIDI_POP *finalLevel; 225 MCGIDI_POP *finalLevel; 222 double probability; 226 double probability; 223 }; 227 }; 224 228 225 struct MCGIDI_POP_s { 229 struct MCGIDI_POP_s { 226 MCGIDI_POP *next; 230 MCGIDI_POP *next; 227 MCGIDI_POP *parent; 231 MCGIDI_POP *parent; 228 char *name; 232 char *name; 229 int globalPoPsIndex; /* Index of pa 233 int globalPoPsIndex; /* Index of particle in the PoPs library if particle can be return to packages using */ 230 int Z, A, level, m; /* this librar 234 int Z, A, level, m; /* this library. Otherwise, -1. */ 231 double mass_MeV; 235 double mass_MeV; 232 double level_MeV; 236 double level_MeV; 233 int numberOfGammaBranchs; 237 int numberOfGammaBranchs; 234 MCGIDI_GammaBranching *gammas; 238 MCGIDI_GammaBranching *gammas; 235 }; 239 }; 236 240 237 struct MCGIDI_POPs_s { 241 struct MCGIDI_POPs_s { 238 int numberOfPOPs, size, increment; 242 int numberOfPOPs, size, increment; 239 MCGIDI_POP *first, *last, **sorted; 243 MCGIDI_POP *first, *last, **sorted; 240 }; 244 }; 241 245 242 struct MCGIDI_particle_s { 246 struct MCGIDI_particle_s { 243 MCGIDI_particle *prior; 247 MCGIDI_particle *prior; 244 MCGIDI_particle *next; 248 MCGIDI_particle *next; 245 int ordinal; 249 int ordinal; 246 int Z, A, m; 250 int Z, A, m; 247 double mass_MeV; 251 double mass_MeV; 248 char *name; 252 char *name; 249 }; 253 }; 250 254 251 struct MCGIDI_decaySamplingInfo_s { 255 struct MCGIDI_decaySamplingInfo_s { 252 enum xDataTOM_frame frame; 256 enum xDataTOM_frame frame; /* The frame the product data are in. */ 253 int isVelocity; 257 int isVelocity; /* See struct MCGIDI_sampledProductsData_s for meaning. This is user input. */ 254 double (*rng)( void * ); 258 double (*rng)( void * ); /* User supplied rng. */ 255 void *rngState; 259 void *rngState; /* User supplied rng state. */ 256 MCGIDI_POP *pop; 260 MCGIDI_POP *pop; /* pop for the sampled product. */ 257 double mu; 261 double mu; /* mu = cos( theta ) for the sampled product. Frame is given by frame member. */ 258 double Ep; 262 double Ep; /* Energy of the product. Frame is given by frame member. */ 259 }; 263 }; 260 264 261 struct MCGIDI_productInfo_s { 265 struct MCGIDI_productInfo_s { 262 int globalPoPsIndex; 266 int globalPoPsIndex; 263 enum MCGIDI_productMultiplicityType produc 267 enum MCGIDI_productMultiplicityType productMultiplicityType; 264 int multiplicity; 268 int multiplicity; 265 int transportable; 269 int transportable; 266 }; 270 }; 267 271 268 struct MCGIDI_productsInfo_s { 272 struct MCGIDI_productsInfo_s { 269 int numberOfProducts; 273 int numberOfProducts; 270 int numberOfAllocatedProducts; 274 int numberOfAllocatedProducts; 271 MCGIDI_productInfo *productInfo; 275 MCGIDI_productInfo *productInfo; 272 }; 276 }; 273 277 274 struct MCGIDI_sampledProductsData_s { 278 struct MCGIDI_sampledProductsData_s { 275 int isVelocity; /* If true, px 279 int isVelocity; /* If true, px_vx, py_vy and pz_vz are velocities otherwise momenta. */ 276 MCGIDI_POP *pop; 280 MCGIDI_POP *pop; 277 double kineticEnergy; 281 double kineticEnergy; 278 double px_vx; 282 double px_vx; 279 double py_vy; 283 double py_vy; 280 double pz_vz; 284 double pz_vz; 281 int delayedNeutronIndex; 285 int delayedNeutronIndex; 282 double delayedNeutronRate; 286 double delayedNeutronRate; 283 double birthTimeSec; /* Some produc 287 double birthTimeSec; /* Some products, like delayed fission neutrons, are to appear (be born) later. */ 284 }; 288 }; 285 289 286 struct MCGIDI_sampledProductsDatas_s { 290 struct MCGIDI_sampledProductsDatas_s { 287 int numberOfProducts; 291 int numberOfProducts; 288 int numberAllocated; 292 int numberAllocated; 289 int incrementSize; 293 int incrementSize; 290 MCGIDI_sampledProductsData *products; 294 MCGIDI_sampledProductsData *products; 291 }; 295 }; 292 296 293 struct MCGIDI_pdfOfX_s { 297 struct MCGIDI_pdfOfX_s { 294 int numberOfXs; 298 int numberOfXs; 295 double *Xs; 299 double *Xs; 296 double *pdf; 300 double *pdf; 297 double *cdf; 301 double *cdf; 298 }; 302 }; 299 303 300 struct MCGIDI_pdfsOfXGivenW_s { 304 struct MCGIDI_pdfsOfXGivenW_s { 301 int numberOfWs; 305 int numberOfWs; 302 ptwXY_interpolation interpolationWY, inter 306 ptwXY_interpolation interpolationWY, interpolationXY; 303 double *Ws; 307 double *Ws; 304 MCGIDI_pdfOfX *dist; 308 MCGIDI_pdfOfX *dist; 305 }; 309 }; 306 310 307 struct MCGIDI_pdfsOfXGivenW_sampled_s { 311 struct MCGIDI_pdfsOfXGivenW_sampled_s { 308 statusMessageReporting *smr; 312 statusMessageReporting *smr; 309 ptwXY_interpolation interpolationWY, inter 313 ptwXY_interpolation interpolationWY, interpolationXY; 310 int iW, iX1, iX2; 314 int iW, iX1, iX2; 311 double x, w, frac; 315 double x, w, frac; 312 }; 316 }; 313 317 314 struct MCGIDI_angular_s { 318 struct MCGIDI_angular_s { 315 enum xDataTOM_frame frame; 319 enum xDataTOM_frame frame; 316 enum MCGIDI_angularType type; 320 enum MCGIDI_angularType type; 317 MCGIDI_angular *recoilProduct; 321 MCGIDI_angular *recoilProduct; 318 MCGIDI_pdfsOfXGivenW dists; 322 MCGIDI_pdfsOfXGivenW dists; 319 double projectileMass_MeV, targetMass_MeV, 323 double projectileMass_MeV, targetMass_MeV, productMass_MeV, residualMass_MeV; 320 }; 324 }; 321 325 322 struct MCGIDI_energyWeightedFunctional_s { 326 struct MCGIDI_energyWeightedFunctional_s { 323 ptwXYPoints *weight; 327 ptwXYPoints *weight; 324 MCGIDI_energy *energy; 328 MCGIDI_energy *energy; 325 }; 329 }; 326 330 327 struct MCGIDI_energyWeightedFunctionals_s { 331 struct MCGIDI_energyWeightedFunctionals_s { 328 int numberOfWeights; 332 int numberOfWeights; 329 MCGIDI_energyWeightedFunctional weightedFu 333 MCGIDI_energyWeightedFunctional weightedFunctional[4]; /* ??????????? Hardwired for no good reason. Will handle up to a (z,4n) reaction. */ 330 }; 334 }; 331 335 332 struct MCGIDI_energyNBodyPhaseSpace_s { 336 struct MCGIDI_energyNBodyPhaseSpace_s { 333 int numberOfProducts; 337 int numberOfProducts; 334 double mass, massFactor, e_inCOMFactor, Q_ 338 double mass, massFactor, e_inCOMFactor, Q_MeV; 335 }; 339 }; 336 340 337 struct MCGIDI_energy_s { 341 struct MCGIDI_energy_s { 338 enum xDataTOM_frame frame; 342 enum xDataTOM_frame frame; 339 enum MCGIDI_energyType type; 343 enum MCGIDI_energyType type; 340 double gammaEnergy_MeV; 344 double gammaEnergy_MeV; 341 double primaryGammaMassFactor; 345 double primaryGammaMassFactor; 342 double e_inCOMFactor; 346 double e_inCOMFactor; 343 MCGIDI_pdfsOfXGivenW dists; 347 MCGIDI_pdfsOfXGivenW dists; 344 double U; 348 double U; 345 ptwXYPoints *theta, *Watt_a, *Watt_b; 349 ptwXYPoints *theta, *Watt_a, *Watt_b; 346 ptwXY_interpolation gInterpolation; 350 ptwXY_interpolation gInterpolation; 347 MCGIDI_pdfOfX g; 351 MCGIDI_pdfOfX g; 348 MCGIDI_energyWeightedFunctionals weightedF 352 MCGIDI_energyWeightedFunctionals weightedFunctionals; 349 MCGIDI_energyNBodyPhaseSpace NBodyPhaseSpa 353 MCGIDI_energyNBodyPhaseSpace NBodyPhaseSpace; 350 }; 354 }; 351 355 352 struct MCGIDI_energyAngular_s { 356 struct MCGIDI_energyAngular_s { 353 enum xDataTOM_frame frame; 357 enum xDataTOM_frame frame; 354 MCGIDI_pdfsOfXGivenW pdfOfEpGivenE; 358 MCGIDI_pdfsOfXGivenW pdfOfEpGivenE; 355 MCGIDI_pdfsOfXGivenW *pdfOfMuGivenEAndEp; 359 MCGIDI_pdfsOfXGivenW *pdfOfMuGivenEAndEp; /* The number of MCGIDI_pdfsOfXGivenW allocated is given by pdfOfEpGivenE.numberOfWs. */ 356 }; 360 }; 357 361 358 struct MCGIDI_angularEnergy_s { 362 struct MCGIDI_angularEnergy_s { 359 enum xDataTOM_frame frame; 363 enum xDataTOM_frame frame; 360 MCGIDI_pdfsOfXGivenW pdfOfMuGivenE; 364 MCGIDI_pdfsOfXGivenW pdfOfMuGivenE; 361 MCGIDI_pdfsOfXGivenW *pdfOfEpGivenEAndMu; 365 MCGIDI_pdfsOfXGivenW *pdfOfEpGivenEAndMu; /* The number of MCGIDI_pdfsOfXGivenW allocated is given by pdfOfMuGivenE.numberOfWs. */ 362 }; 366 }; 363 367 364 struct MCGIDI_KalbachMann_ras_s { 368 struct MCGIDI_KalbachMann_ras_s { 365 double *rs; 369 double *rs; 366 double *as; 370 double *as; 367 }; 371 }; 368 372 369 struct MCGIDI_KalbachMann_s { 373 struct MCGIDI_KalbachMann_s { 370 enum xDataTOM_frame frame; 374 enum xDataTOM_frame frame; 371 double energyToMeVFactor, massFactor, Sa, 375 double energyToMeVFactor, massFactor, Sa, Sb, Ma, mb; /* Needed if a(E,E') is caluclated from the formula. */ 372 MCGIDI_pdfsOfXGivenW dists; 376 MCGIDI_pdfsOfXGivenW dists; /* Sa currently not used. */ 373 MCGIDI_KalbachMann_ras *ras; 377 MCGIDI_KalbachMann_ras *ras; 374 }; 378 }; 375 379 376 struct MCGIDI_distribution_s { 380 struct MCGIDI_distribution_s { 377 MCGIDI_product *product; 381 MCGIDI_product *product; 378 enum MCGIDI_distributionType type; 382 enum MCGIDI_distributionType type; 379 MCGIDI_angular *angular; /* 383 MCGIDI_angular *angular; /* All distribution forms must have a frame member. */ 380 MCGIDI_energy *energy; 384 MCGIDI_energy *energy; 381 MCGIDI_energyAngular *energyAngular; 385 MCGIDI_energyAngular *energyAngular; 382 MCGIDI_angularEnergy *angularEnergy; 386 MCGIDI_angularEnergy *angularEnergy; 383 MCGIDI_KalbachMann *KalbachMann; 387 MCGIDI_KalbachMann *KalbachMann; 384 }; 388 }; 385 389 386 struct MCGIDI_outputChannel_s { 390 struct MCGIDI_outputChannel_s { 387 enum MCGIDI_channelGenre genre; 391 enum MCGIDI_channelGenre genre; 388 MCGIDI_reaction *reaction; /* 392 MCGIDI_reaction *reaction; /* This is only used for output channels. */ 389 MCGIDI_product *parent; /* 393 MCGIDI_product *parent; /* This is only used for decay channels. */ 390 int QIsFloat; 394 int QIsFloat; 391 double Q; 395 double Q; 392 int numberOfProducts; 396 int numberOfProducts; 393 MCGIDI_product *products; 397 MCGIDI_product *products; 394 }; 398 }; 395 399 396 struct MCGIDI_product_s { 400 struct MCGIDI_product_s { 397 MCGIDI_POP *pop; 401 MCGIDI_POP *pop; 398 char *label; 402 char *label; 399 MCGIDI_outputChannel *outputChannel; 403 MCGIDI_outputChannel *outputChannel; 400 int multiplicity; 404 int multiplicity; /* If 0, the multiplicity is either 'energyDependent' or 'partialProduction'. */ 401 int delayedNeutronIndex; 405 int delayedNeutronIndex; 402 double delayedNeutronRate; 406 double delayedNeutronRate; 403 ptwXYPoints *multiplicityVsEnergy; 407 ptwXYPoints *multiplicityVsEnergy; 404 ptwXYPoints *norms; 408 ptwXYPoints *norms; 405 int numberOfPiecewiseMultiplicities; 409 int numberOfPiecewiseMultiplicities; 406 ptwXYPoints **piecewiseMultiplicities; 410 ptwXYPoints **piecewiseMultiplicities; 407 MCGIDI_distribution distribution; 411 MCGIDI_distribution distribution; 408 MCGIDI_outputChannel decayChannel; 412 MCGIDI_outputChannel decayChannel; 409 }; 413 }; 410 414 411 struct MCGIDI_reaction_s { 415 struct MCGIDI_reaction_s { 412 MCGIDI_target_heated *target; 416 MCGIDI_target_heated *target; 413 int ENDF_MT, ENDL_C, ENDL_S; 417 int ENDF_MT, ENDL_C, ENDL_S; 414 enum MCGIDI_reactionType reactionType; 418 enum MCGIDI_reactionType reactionType; 415 char const *outputChannelStr; 419 char const *outputChannelStr; 416 xDataTOM_attributionList attributes; 420 xDataTOM_attributionList attributes; /* Do not free, owned by attributes. */ 417 int domainValuesPresent; 421 int domainValuesPresent; /* True if cross section data defined so EMin and EMax are value. */ 418 int thresholdGroupIndex; 422 int thresholdGroupIndex; /* For grouped data, the group index where threshold starts. */ 419 double thresholdGroupDomain; 423 double thresholdGroupDomain; /* This is groupEnergy[thresholdGroupIndex+1] - EMin. */ 420 double thresholdGroupedDeltaCrossSection; 424 double thresholdGroupedDeltaCrossSection; /* The adjusted group cross section in group thresholdGroupIndex. */ 421 double EMin, EMax, finalQ; 425 double EMin, EMax, finalQ; /* BRB, EMin is used as threshold. However, some reactions, especially charged particle */ 422 ptwXYPoints *crossSection; 426 ptwXYPoints *crossSection; /* have effective thresholds much higher than EMin, may need to handle these differently??????? */ 423 ptwXPoints *crossSectionGrouped; 427 ptwXPoints *crossSectionGrouped; 424 MCGIDI_outputChannel outputChannel; 428 MCGIDI_outputChannel outputChannel; 425 MCGIDI_productsInfo productsInfo; 429 MCGIDI_productsInfo productsInfo; /* See MCGIDI_reaction_ParseDetermineReactionProducts for description. */ 426 transportabilitiesMap *transportabilities; 430 transportabilitiesMap *transportabilities; 427 }; 431 }; 428 432 429 struct MCGIDI_target_heated_s { 433 struct MCGIDI_target_heated_s { 430 int ordinal; 434 int ordinal; 431 char *path; /* Partial path of 435 char *path; /* Partial path of input file. */ 432 char *absPath; /* Full absolute pa 436 char *absPath; /* Full absolute path of input file. */ 433 MCGIDI_POPs pops; 437 MCGIDI_POPs pops; 434 MCGIDI_POP *projectilePOP; 438 MCGIDI_POP *projectilePOP; 435 MCGIDI_POP *targetPOP; 439 MCGIDI_POP *targetPOP; 436 xDataTOM_attributionList attributes; 440 xDataTOM_attributionList attributes; 437 char *contents; 441 char *contents; 438 double temperature_MeV; 442 double temperature_MeV; 439 double EMin, EMax; 443 double EMin, EMax; 440 ptwXYPoints *crossSection; 444 ptwXYPoints *crossSection; 441 ptwXPoints *crossSectionGrouped; 445 ptwXPoints *crossSectionGrouped; 442 ptwXPoints *crossSectionGroupedForSampling 446 ptwXPoints *crossSectionGroupedForSampling; 443 int numberOfReactions; 447 int numberOfReactions; 444 MCGIDI_reaction *reactions; 448 MCGIDI_reaction *reactions; 445 transportabilitiesMap *transportabilities; 449 transportabilitiesMap *transportabilities; 446 }; 450 }; 447 451 448 struct MCGIDI_target_heated_info_s { 452 struct MCGIDI_target_heated_info_s { 449 int ordinal; 453 int ordinal; 450 double temperature; 454 double temperature; 451 char *path; /* Full path o 455 char *path; /* Full path of input file. */ 452 char *contents; 456 char *contents; 453 MCGIDI_target_heated *heatedTarget; 457 MCGIDI_target_heated *heatedTarget; 454 }; 458 }; 455 459 456 struct MCGIDI_target_s { 460 struct MCGIDI_target_s { 457 char *path; /* Full path o 461 char *path; /* Full path of input file. */ 458 char *absPath; /* Full absolu 462 char *absPath; /* Full absolute path of input file. */ 459 MCGIDI_POP *projectilePOP; 463 MCGIDI_POP *projectilePOP; 460 MCGIDI_POP *targetPOP; 464 MCGIDI_POP *targetPOP; 461 xDataTOM_attributionList attributes; 465 xDataTOM_attributionList attributes; 462 int nHeatedTargets, nReadHeatedTargets; 466 int nHeatedTargets, nReadHeatedTargets; 463 MCGIDI_target_heated *baseHeatedTarget; 467 MCGIDI_target_heated *baseHeatedTarget; /* The lowest temperature whose contents is "all" data, (e.g, not just "crossSection"). */ 464 MCGIDI_target_heated_info *heatedTargets; 468 MCGIDI_target_heated_info *heatedTargets; /* List of heated targets in order by temperature. */ 465 MCGIDI_target_heated_info **readHeatedTarg 469 MCGIDI_target_heated_info **readHeatedTargets; /* List of "read in" heated targets in order by temperature. */ 466 }; 470 }; 467 471 468 char const *MCGIDI_version( void ); 472 char const *MCGIDI_version( void ); 469 int MCGIDI_versionMajor( void ); 473 int MCGIDI_versionMajor( void ); 470 int MCGIDI_versionMinor( void ); 474 int MCGIDI_versionMinor( void ); 471 int MCGIDI_versionPatchLevel( void ); 475 int MCGIDI_versionPatchLevel( void ); 472 476 473 /* 477 /* 474 * Routines in MCGIDI_target.c 478 * Routines in MCGIDI_target.c 475 */ 479 */ 476 MCGIDI_target *MCGIDI_target_new( statusMessag 480 MCGIDI_target *MCGIDI_target_new( statusMessageReporting *smr ); 477 int MCGIDI_target_initialize( statusMessageRep 481 int MCGIDI_target_initialize( statusMessageReporting *smr, MCGIDI_target *target ); 478 MCGIDI_target *MCGIDI_target_newRead( statusMe 482 MCGIDI_target *MCGIDI_target_newRead( statusMessageReporting *smr, const char *fileName ); 479 int MCGIDI_target_readFromMapViaPoPIDs( status 483 int MCGIDI_target_readFromMapViaPoPIDs( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_map *map, const char *evaluation, 480 int projectile_PoPID, int target_PoPID 484 int projectile_PoPID, int target_PoPID ); 481 int MCGIDI_target_readFromMap( statusMessageRe 485 int MCGIDI_target_readFromMap( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_map *map, const char *evaluation, const char *projectileName, 482 const char *targetName ); 486 const char *targetName ); 483 MCGIDI_target *MCGIDI_target_newReadFromMapVia 487 MCGIDI_target *MCGIDI_target_newReadFromMapViaPoPIDs( statusMessageReporting *smr, MCGIDI_map *map, const char *evaluation, 484 int projectile_PoPID, int target_PoPID 488 int projectile_PoPID, int target_PoPID ); 485 MCGIDI_target *MCGIDI_target_newReadFromMap( s 489 MCGIDI_target *MCGIDI_target_newReadFromMap( statusMessageReporting *smr, MCGIDI_map *map, const char *evaluation, const char *projectileName, 486 const char *targetName ); 490 const char *targetName ); 487 MCGIDI_target *MCGIDI_target_free( statusMessa 491 MCGIDI_target *MCGIDI_target_free( statusMessageReporting *smr, MCGIDI_target *target ); 488 int MCGIDI_target_release( statusMessageReport 492 int MCGIDI_target_release( statusMessageReporting *smr, MCGIDI_target *target ); 489 int MCGIDI_target_read( statusMessageReporting 493 int MCGIDI_target_read( statusMessageReporting *smr, MCGIDI_target *target, const char *fileName ); 490 char const *MCGIDI_target_getAttributesValue( 494 char const *MCGIDI_target_getAttributesValue( statusMessageReporting *smr, MCGIDI_target *target, char const *name ); 491 int MCGIDI_target_getTemperatures( statusMessa 495 int MCGIDI_target_getTemperatures( statusMessageReporting *smr, MCGIDI_target *target, double *temperatures ); 492 int MCGIDI_target_readHeatedTarget( statusMess 496 int MCGIDI_target_readHeatedTarget( statusMessageReporting *smr, MCGIDI_target *target, int index ); 493 MCGIDI_target_heated *MCGIDI_target_getHeatedT 497 MCGIDI_target_heated *MCGIDI_target_getHeatedTargetAtIndex_ReadIfNeeded( statusMessageReporting *smr, MCGIDI_target *target, int index ); 494 MCGIDI_target_heated *MCGIDI_target_getHeatedT 498 MCGIDI_target_heated *MCGIDI_target_getHeatedTargetAtTIndex( statusMessageReporting *smr, MCGIDI_target *target, int index ); 495 499 496 int MCGIDI_target_numberOfReactions( statusMes 500 int MCGIDI_target_numberOfReactions( statusMessageReporting *smr, MCGIDI_target *target ); 497 enum MCGIDI_reactionType MCGIDI_target_getReac 501 enum MCGIDI_reactionType MCGIDI_target_getReactionTypeAtIndex( statusMessageReporting *smr, MCGIDI_target *target, int index ); 498 MCGIDI_reaction *MCGIDI_target_getReactionAtIn 502 MCGIDI_reaction *MCGIDI_target_getReactionAtIndex( MCGIDI_target *target, int index ); 499 MCGIDI_reaction *MCGIDI_target_getReactionAtIn 503 MCGIDI_reaction *MCGIDI_target_getReactionAtIndex_smr( statusMessageReporting *smr, MCGIDI_target *target, int index ); 500 int MCGIDI_target_numberOfProductionReactions( 504 int MCGIDI_target_numberOfProductionReactions( statusMessageReporting *smr, MCGIDI_target *target ); 501 505 502 transportabilitiesMap const *MCGIDI_target_get 506 transportabilitiesMap const *MCGIDI_target_getUniqueProducts( statusMessageReporting *smr, MCGIDI_target *target ); 503 int MCGIDI_target_recast( statusMessageReporti 507 int MCGIDI_target_recast( statusMessageReporting *smr, MCGIDI_target *target, GIDI_settings &settings ); 504 508 505 int MCGIDI_target_getDomain( statusMessageRepo 509 int MCGIDI_target_getDomain( statusMessageReporting *smr, MCGIDI_target *target, double *EMin, double *EMax ); 506 double MCGIDI_target_getTotalCrossSectionAtTAn 510 double MCGIDI_target_getTotalCrossSectionAtTAndE( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_quantitiesLookupModes &modes, 507 bool sampling ); 511 bool sampling ); 508 double MCGIDI_target_getIndexReactionCrossSect 512 double MCGIDI_target_getIndexReactionCrossSectionAtE( statusMessageReporting *smr, MCGIDI_target *target, int index, MCGIDI_quantitiesLookupModes &modes, 509 bool sampling ); 513 bool sampling ); 510 int MCGIDI_target_sampleReaction( statusMessag 514 int MCGIDI_target_sampleReaction( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_quantitiesLookupModes &modes, double totalXSec, 511 double (*userrng)( void * ), void *rng 515 double (*userrng)( void * ), void *rngState ); 512 int MCGIDI_target_sampleNullReactionProductsAt 516 int MCGIDI_target_sampleNullReactionProductsAtE( statusMessageReporting *smr, MCGIDI_target *target, 513 MCGIDI_quantitiesLookupModes &modes, MCGID 517 MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productDatas ); 514 int MCGIDI_target_sampleIndexReactionProductsA 518 int MCGIDI_target_sampleIndexReactionProductsAtE( statusMessageReporting *smr, MCGIDI_target *target, int index, 515 MCGIDI_quantitiesLookupModes &modes, M 519 MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productData ); 516 double MCGIDI_target_getIndexReactionFinalQ( s 520 double MCGIDI_target_getIndexReactionFinalQ( statusMessageReporting *smr, MCGIDI_target *target, int index, MCGIDI_quantitiesLookupModes &modes ); 517 521 518 /* 522 /* 519 * Routines in MCGIDI_target_heated.c 523 * Routines in MCGIDI_target_heated.c 520 */ 524 */ 521 MCGIDI_target_heated *MCGIDI_target_heated_new 525 MCGIDI_target_heated *MCGIDI_target_heated_new( statusMessageReporting *smr ); 522 int MCGIDI_target_heated_initialize( statusMes 526 int MCGIDI_target_heated_initialize( statusMessageReporting *smr, MCGIDI_target_heated *target ); 523 MCGIDI_target_heated *MCGIDI_target_heated_new 527 MCGIDI_target_heated *MCGIDI_target_heated_newRead( statusMessageReporting *smr, const char *fileName ); 524 MCGIDI_target_heated *MCGIDI_target_heated_fre 528 MCGIDI_target_heated *MCGIDI_target_heated_free( statusMessageReporting *smr, MCGIDI_target_heated *target ); 525 int MCGIDI_target_heated_release( statusMessag 529 int MCGIDI_target_heated_release( statusMessageReporting *smr, MCGIDI_target_heated *target ); 526 int MCGIDI_target_heated_read( statusMessageRe 530 int MCGIDI_target_heated_read( statusMessageReporting *smr, MCGIDI_target_heated *target, const char *fileName ); 527 int MCGIDI_target_heated_numberOfReactions( st 531 int MCGIDI_target_heated_numberOfReactions( statusMessageReporting *smr, MCGIDI_target_heated *target ); 528 int MCGIDI_target_heated_numberOfProductionRea 532 int MCGIDI_target_heated_numberOfProductionReactions( statusMessageReporting *smr, MCGIDI_target_heated *target ); 529 MCGIDI_reaction *MCGIDI_target_heated_getReact 533 MCGIDI_reaction *MCGIDI_target_heated_getReactionAtIndex( MCGIDI_target_heated *target, int index ); 530 MCGIDI_reaction *MCGIDI_target_heated_getReact 534 MCGIDI_reaction *MCGIDI_target_heated_getReactionAtIndex_smr( statusMessageReporting *smr, MCGIDI_target_heated *target, int index ); 531 #if 0 535 #if 0 532 MCGIDI_reaction *MCGIDI_target_heated_getProdu 536 MCGIDI_reaction *MCGIDI_target_heated_getProductionReactionAtIndex( MCGIDI_target_heated *target, int index ); 533 #endif 537 #endif 534 MCGIDI_POP *MCGIDI_target_heated_getPOPForProj 538 MCGIDI_POP *MCGIDI_target_heated_getPOPForProjectile( statusMessageReporting *smr, MCGIDI_target_heated *target ); 535 MCGIDI_POP *MCGIDI_target_heated_getPOPForTarg 539 MCGIDI_POP *MCGIDI_target_heated_getPOPForTarget( statusMessageReporting *smr, MCGIDI_target_heated *target ); 536 double MCGIDI_target_heated_getProjectileMass_ 540 double MCGIDI_target_heated_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_target_heated *target ); 537 double MCGIDI_target_heated_getTargetMass_MeV( 541 double MCGIDI_target_heated_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_target_heated *target ); 538 int MCGIDI_target_heated_getEnergyGrid( status 542 int MCGIDI_target_heated_getEnergyGrid( statusMessageReporting *smr, MCGIDI_target_heated *target, double **energyGrid ); 539 double MCGIDI_target_heated_getTotalCrossSecti 543 double MCGIDI_target_heated_getTotalCrossSectionAtE( statusMessageReporting *smr, MCGIDI_target_heated *target, MCGIDI_quantitiesLookupModes &modes, 540 bool sampling ); 544 bool sampling ); 541 double MCGIDI_target_heated_getIndexReactionCr 545 double MCGIDI_target_heated_getIndexReactionCrossSectionAtE( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, 542 MCGIDI_quantitiesLookupModes &modes, b 546 MCGIDI_quantitiesLookupModes &modes, bool sampling ); 543 int MCGIDI_target_heated_sampleIndexReactionPr 547 int MCGIDI_target_heated_sampleIndexReactionProductsAtE( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, 544 MCGIDI_quantitiesLookupModes &modes, M 548 MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productData ); 545 double MCGIDI_target_heated_getReactionsThresh 549 double MCGIDI_target_heated_getReactionsThreshold( statusMessageReporting *smr, MCGIDI_target_heated *target, int index ); 546 int MCGIDI_target_heated_getReactionsDomain( s 550 int MCGIDI_target_heated_getReactionsDomain( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, double *EMin, double *EMax ); 547 double MCGIDI_target_heated_getIndexReactionFi 551 double MCGIDI_target_heated_getIndexReactionFinalQ( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, 548 MCGIDI_quantitiesLookupModes &modes ); 552 MCGIDI_quantitiesLookupModes &modes ); 549 553 550 transportabilitiesMap const *MCGIDI_target_hea 554 transportabilitiesMap const *MCGIDI_target_heated_getUniqueProducts( statusMessageReporting *smr, MCGIDI_target_heated *target ); 551 int MCGIDI_target_heated_recast( statusMessage 555 int MCGIDI_target_heated_recast( statusMessageReporting *smr, MCGIDI_target_heated *target, GIDI_settings &settings ); 552 556 553 /* 557 /* 554 * Routines in MCGIDI_reaction.c 558 * Routines in MCGIDI_reaction.c 555 */ 559 */ 556 MCGIDI_reaction *MCGIDI_reaction_new( statusMe 560 MCGIDI_reaction *MCGIDI_reaction_new( statusMessageReporting *smr ); 557 int MCGIDI_reaction_initialize( statusMessageR 561 int MCGIDI_reaction_initialize( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 558 MCGIDI_reaction *MCGIDI_reaction_free( statusM 562 MCGIDI_reaction *MCGIDI_reaction_free( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 559 int MCGIDI_reaction_release( statusMessageRepo 563 int MCGIDI_reaction_release( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 560 int MCGIDI_reaction_parseFromTOM( statusMessag 564 int MCGIDI_reaction_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_target_heated *target, 561 MCGIDI_POPs *pops, MCGIDI_reaction *reacti 565 MCGIDI_POPs *pops, MCGIDI_reaction *reaction ); 562 enum MCGIDI_reactionType MCGIDI_reaction_getRe 566 enum MCGIDI_reactionType MCGIDI_reaction_getReactionType( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 563 MCGIDI_target_heated *MCGIDI_reaction_getTarge 567 MCGIDI_target_heated *MCGIDI_reaction_getTargetHeated( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 564 double MCGIDI_reaction_getProjectileMass_MeV( 568 double MCGIDI_reaction_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 565 double MCGIDI_reaction_getTargetMass_MeV( stat 569 double MCGIDI_reaction_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_reaction *reaction ); 566 int MCGIDI_reaction_getDomain( statusMessageRe 570 int MCGIDI_reaction_getDomain( statusMessageReporting *smr, MCGIDI_reaction *reaction, double *EMin, double *EMax ); 567 int MCGIDI_reaction_fixDomains( statusMessageR 571 int MCGIDI_reaction_fixDomains( statusMessageReporting *smr, MCGIDI_reaction *reaction, double EMin, double EMax, nfu_status *status ); 568 double MCGIDI_reaction_getCrossSectionAtE( sta 572 double MCGIDI_reaction_getCrossSectionAtE( statusMessageReporting *smr, MCGIDI_reaction *reaction, MCGIDI_quantitiesLookupModes &modes, bool sampling ); 569 double MCGIDI_reaction_getFinalQ( statusMessag 573 double MCGIDI_reaction_getFinalQ( statusMessageReporting *smr, MCGIDI_reaction *reaction, MCGIDI_quantitiesLookupModes &modes ); 570 int MCGIDI_reaction_getENDF_MTNumber( MCGIDI_r 574 int MCGIDI_reaction_getENDF_MTNumber( MCGIDI_reaction *reaction ); 571 int MCGIDI_reaction_getENDL_CSNumbers( MCGIDI_ 575 int MCGIDI_reaction_getENDL_CSNumbers( MCGIDI_reaction *reaction, int *S ); 572 int MCGIDI_reaction_recast( statusMessageRepor 576 int MCGIDI_reaction_recast( statusMessageReporting *smr, MCGIDI_reaction *reaction, GIDI_settings &settings, 573 GIDI_settings_particle const *projectileSe 577 GIDI_settings_particle const *projectileSettings, double temperature_MeV, ptwXPoints *totalGroupedCrossSection ); 574 578 575 MCGIDI_productsInfo *MCGIDI_reaction_getProduc 579 MCGIDI_productsInfo *MCGIDI_reaction_getProductsInfo( MCGIDI_reaction *reaction ); 576 int MCGIDI_productsInfo_getNumberOfUniqueProdu 580 int MCGIDI_productsInfo_getNumberOfUniqueProducts( MCGIDI_productsInfo *productsInfo ); 577 int MCGIDI_productsInfo_getPoPsIndexAtIndex( M 581 int MCGIDI_productsInfo_getPoPsIndexAtIndex( MCGIDI_productsInfo *productsInfo, int index ); 578 enum MCGIDI_productMultiplicityType MCGIDI_pro 582 enum MCGIDI_productMultiplicityType MCGIDI_productsInfo_getMultiplicityTypeAtIndex( MCGIDI_productsInfo *productsInfo, int index ); 579 int MCGIDI_productsInfo_getIntegerMultiplicity 583 int MCGIDI_productsInfo_getIntegerMultiplicityAtIndex( MCGIDI_productsInfo *productsInfo, int index ); 580 int MCGIDI_productsInfo_getTransportableAtInde 584 int MCGIDI_productsInfo_getTransportableAtIndex( MCGIDI_productsInfo *productsInfo, int index ); 581 585 582 /* 586 /* 583 * Routines in MCGIDI_pop.c 587 * Routines in MCGIDI_pop.c 584 */ 588 */ 585 MCGIDI_POPs *MCGIDI_POPs_new( statusMessageRep 589 MCGIDI_POPs *MCGIDI_POPs_new( statusMessageReporting *smr, int size ); 586 int MCGIDI_POPs_initial( statusMessageReportin 590 int MCGIDI_POPs_initial( statusMessageReporting *smr, MCGIDI_POPs *pops, int size ); 587 void *MCGIDI_POPs_free( MCGIDI_POPs *pops ); 591 void *MCGIDI_POPs_free( MCGIDI_POPs *pops ); 588 int MCGIDI_POPs_release( MCGIDI_POPs *pops ); 592 int MCGIDI_POPs_release( MCGIDI_POPs *pops ); 589 MCGIDI_POP *MCGIDI_POPs_addParticleIfNeeded( s 593 MCGIDI_POP *MCGIDI_POPs_addParticleIfNeeded( statusMessageReporting *smr, MCGIDI_POPs *pops, char const *name, double mass_MeV, 590 double level_MeV, MCGIDI_POP *parent, int 594 double level_MeV, MCGIDI_POP *parent, int globalParticle ); 591 int MCGIDI_POPs_findParticleIndex( MCGIDI_POPs 595 int MCGIDI_POPs_findParticleIndex( MCGIDI_POPs *pops, char const *name ); 592 MCGIDI_POP *MCGIDI_POPs_findParticle( MCGIDI_P 596 MCGIDI_POP *MCGIDI_POPs_findParticle( MCGIDI_POPs *pops, char const *name ); 593 void MCGIDI_POPs_writeSortedList( MCGIDI_POPs 597 void MCGIDI_POPs_writeSortedList( MCGIDI_POPs *pops, FILE *f ); 594 void MCGIDI_POPs_printSortedList( MCGIDI_POPs 598 void MCGIDI_POPs_printSortedList( MCGIDI_POPs *pops ); 595 599 596 MCGIDI_POP *MCGIDI_POP_new( statusMessageRepor 600 MCGIDI_POP *MCGIDI_POP_new( statusMessageReporting *smr, char const *name, double mass_MeV, double level_MeV, MCGIDI_POP *parent ); 597 MCGIDI_POP *MCGIDI_POP_free( MCGIDI_POP *pop ) 601 MCGIDI_POP *MCGIDI_POP_free( MCGIDI_POP *pop ); 598 MCGIDI_POP *MCGIDI_POP_release( MCGIDI_POP *po 602 MCGIDI_POP *MCGIDI_POP_release( MCGIDI_POP *pop ); 599 double MCGIDI_POP_getMass_MeV( MCGIDI_POP *pop 603 double MCGIDI_POP_getMass_MeV( MCGIDI_POP *pop ); 600 604 601 /* 605 /* 602 * Routines in MCGIDI_particle.c 606 * Routines in MCGIDI_particle.c 603 */ 607 */ 604 MCGIDI_particle *MCGIDI_particle_new( statusMe 608 MCGIDI_particle *MCGIDI_particle_new( statusMessageReporting *smr ); 605 int MCGIDI_particle_initialize( statusMessageR 609 int MCGIDI_particle_initialize( statusMessageReporting *smr, MCGIDI_particle *particle ); 606 MCGIDI_particle *MCGIDI_particle_free( statusM 610 MCGIDI_particle *MCGIDI_particle_free( statusMessageReporting *smr, MCGIDI_particle *particle ); 607 int MCGIDI_particle_release( statusMessageRepo 611 int MCGIDI_particle_release( statusMessageReporting *smr, MCGIDI_particle *particle ); 608 int MCGIDI_particle_freeInternalList( statusMe 612 int MCGIDI_particle_freeInternalList( statusMessageReporting *smr ); 609 MCGIDI_particle *MCGIDI_particle_getInternalID 613 MCGIDI_particle *MCGIDI_particle_getInternalID( statusMessageReporting *smr, const char * const name, MCGIDI_POPs *pops ); 610 int MCGIDI_particle_printInternalSortedList( s 614 int MCGIDI_particle_printInternalSortedList( statusMessageReporting *smr ); 611 615 612 /* 616 /* 613 * Routines in MCGIDI_outputChannel.c 617 * Routines in MCGIDI_outputChannel.c 614 */ 618 */ 615 MCGIDI_outputChannel *MCGIDI_outputChannel_new 619 MCGIDI_outputChannel *MCGIDI_outputChannel_new( statusMessageReporting *smr ); 616 int MCGIDI_outputChannel_initialize( statusMes 620 int MCGIDI_outputChannel_initialize( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel ); 617 MCGIDI_outputChannel *MCGIDI_outputChannel_fre 621 MCGIDI_outputChannel *MCGIDI_outputChannel_free( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel ); 618 int MCGIDI_outputChannel_release( statusMessag 622 int MCGIDI_outputChannel_release( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel ); 619 int MCGIDI_outputChannel_parseFromTOM( statusM 623 int MCGIDI_outputChannel_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_POPs *pops, MCGIDI_outputChannel *outputChannel, 620 MCGIDI_reaction *reaction, MCGIDI_product 624 MCGIDI_reaction *reaction, MCGIDI_product *parent ); 621 int MCGIDI_outputChannel_numberOfProducts( MCG 625 int MCGIDI_outputChannel_numberOfProducts( MCGIDI_outputChannel *outputChannel ); 622 MCGIDI_product *MCGIDI_outputChannel_getProduc 626 MCGIDI_product *MCGIDI_outputChannel_getProductAtIndex( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, int i ); 623 int MCGIDI_outputChannel_getDomain( statusMess 627 int MCGIDI_outputChannel_getDomain( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double *EMin, double *EMax ); 624 MCGIDI_target_heated *MCGIDI_outputChannel_get 628 MCGIDI_target_heated *MCGIDI_outputChannel_getTargetHeated( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel ); 625 double MCGIDI_outputChannel_getProjectileMass_ 629 double MCGIDI_outputChannel_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel ); 626 double MCGIDI_outputChannel_getTargetMass_MeV( 630 double MCGIDI_outputChannel_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel ); 627 double MCGIDI_outputChannel_getQ_MeV( statusMe 631 double MCGIDI_outputChannel_getQ_MeV( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double e_in ); 628 double MCGIDI_outputChannel_getFinalQ( statusM 632 double MCGIDI_outputChannel_getFinalQ( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double e_in ); 629 int MCGIDI_outputChannel_sampleProductsAtE( st 633 int MCGIDI_outputChannel_sampleProductsAtE( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, MCGIDI_quantitiesLookupModes &modes, 630 MCGIDI_decaySamplingInfo *decaySamplingInf 634 MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productDatas, double *masses ); 631 635 632 /* 636 /* 633 * Routines in MCGIDI_product.c 637 * Routines in MCGIDI_product.c 634 */ 638 */ 635 MCGIDI_product *MCGIDI_product_new( statusMess 639 MCGIDI_product *MCGIDI_product_new( statusMessageReporting *smr ); 636 int MCGIDI_product_initialize( statusMessageRe 640 int MCGIDI_product_initialize( statusMessageReporting *smr, MCGIDI_product *product ); 637 MCGIDI_product *MCGIDI_product_free( statusMes 641 MCGIDI_product *MCGIDI_product_free( statusMessageReporting *smr, MCGIDI_product *product ); 638 int MCGIDI_product_release( statusMessageRepor 642 int MCGIDI_product_release( statusMessageReporting *smr, MCGIDI_product *product ); 639 int MCGIDI_product_parseFromTOM( statusMessage 643 int MCGIDI_product_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_outputChannel *outputChannel, 640 MCGIDI_POPs *pops, MCGIDI_product *pro 644 MCGIDI_POPs *pops, MCGIDI_product *product, int *delayedNeutronIndex ); 641 int MCGIDI_product_getDomain( statusMessageRep 645 int MCGIDI_product_getDomain( statusMessageReporting *smr, MCGIDI_product *product, double *EMin, double *EMax ); 642 int MCGIDI_product_setTwoBodyMasses( statusMes 646 int MCGIDI_product_setTwoBodyMasses( statusMessageReporting *smr, MCGIDI_product *product, double projectileMass_MeV, double targetMass_MeV, 643 double productMass_MeV, double residualMas 647 double productMass_MeV, double residualMass_MeV ); 644 double MCGIDI_product_getMass_MeV( statusMessa 648 double MCGIDI_product_getMass_MeV( statusMessageReporting *smr, MCGIDI_product *product ); 645 MCGIDI_target_heated *MCGIDI_product_getTarget 649 MCGIDI_target_heated *MCGIDI_product_getTargetHeated( statusMessageReporting *smr, MCGIDI_product *product ); 646 double MCGIDI_product_getProjectileMass_MeV( s 650 double MCGIDI_product_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_product *product ); 647 double MCGIDI_product_getTargetMass_MeV( statu 651 double MCGIDI_product_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_product *product ); 648 int MCGIDI_product_sampleMultiplicity( statusM 652 int MCGIDI_product_sampleMultiplicity( statusMessageReporting *smr, MCGIDI_product *product, double e_in, double r ); 649 int MCGIDI_product_sampleMu( statusMessageRepo 653 int MCGIDI_product_sampleMu( statusMessageReporting *smr, MCGIDI_product *product, MCGIDI_quantitiesLookupModes &modes, 650 MCGIDI_decaySamplingInfo *decaySamplingInf 654 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 651 655 652 int MCGIDI_sampledProducts_initialize( statusM 656 int MCGIDI_sampledProducts_initialize( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas, int incrementSize ); 653 int MCGIDI_sampledProducts_release( statusMess 657 int MCGIDI_sampledProducts_release( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas ); 654 int MCGIDI_sampledProducts_remalloc( statusMes 658 int MCGIDI_sampledProducts_remalloc( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas ); 655 int MCGIDI_sampledProducts_addProduct( statusM 659 int MCGIDI_sampledProducts_addProduct( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas, 656 MCGIDI_sampledProductsData *sampledProduct 660 MCGIDI_sampledProductsData *sampledProductsData ); 657 int MCGIDI_sampledProducts_number( MCGIDI_samp 661 int MCGIDI_sampledProducts_number( MCGIDI_sampledProductsDatas *sampledProductsDatas ); 658 MCGIDI_sampledProductsData *MCGIDI_sampledProd 662 MCGIDI_sampledProductsData *MCGIDI_sampledProducts_getProductAtIndex( MCGIDI_sampledProductsDatas *sampledProductsDatas, int index ); 659 663 660 /* 664 /* 661 * Routines in MCGIDI_distribution.c 665 * Routines in MCGIDI_distribution.c 662 */ 666 */ 663 MCGIDI_distribution *MCGIDI_distribution_new( 667 MCGIDI_distribution *MCGIDI_distribution_new( statusMessageReporting *smr ); 664 int MCGIDI_distribution_initialize( statusMess 668 int MCGIDI_distribution_initialize( statusMessageReporting *smr, MCGIDI_distribution *distribution ); 665 MCGIDI_distribution *MCGIDI_distribution_free( 669 MCGIDI_distribution *MCGIDI_distribution_free( statusMessageReporting *smr, MCGIDI_distribution *distribution ); 666 int MCGIDI_distribution_release( statusMessage 670 int MCGIDI_distribution_release( statusMessageReporting *smr, MCGIDI_distribution *distribution ); 667 int MCGIDI_distribution_parseFromTOM( statusMe 671 int MCGIDI_distribution_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_product *product, MCGIDI_POPs *pops, ptwXYPoints *norms ); 668 672 669 /* 673 /* 670 * Routines in MCGIDI_angular.c 674 * Routines in MCGIDI_angular.c 671 */ 675 */ 672 MCGIDI_angular *MCGIDI_angular_new( statusMess 676 MCGIDI_angular *MCGIDI_angular_new( statusMessageReporting *smr ); 673 int MCGIDI_angular_initialize( statusMessageRe 677 int MCGIDI_angular_initialize( statusMessageReporting *smr, MCGIDI_angular *angular ); 674 MCGIDI_angular *MCGIDI_angular_free( statusMes 678 MCGIDI_angular *MCGIDI_angular_free( statusMessageReporting *smr, MCGIDI_angular *angular ); 675 int MCGIDI_angular_release( statusMessageRepor 679 int MCGIDI_angular_release( statusMessageReporting *smr, MCGIDI_angular *angular ); 676 int MCGIDI_angular_setTwoBodyMasses( statusMes 680 int MCGIDI_angular_setTwoBodyMasses( statusMessageReporting *smr, MCGIDI_angular *angular, double projectileMass_MeV, double targetMass_MeV, 677 double productMass_MeV, double residualMas 681 double productMass_MeV, double residualMass_MeV ); 678 int MCGIDI_angular_parseFromTOM( statusMessage 682 int MCGIDI_angular_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms ); 679 int MCGIDI_angular_sampleMu( statusMessageRepo 683 int MCGIDI_angular_sampleMu( statusMessageReporting *smr, MCGIDI_angular *angular, MCGIDI_quantitiesLookupModes &modes, 680 MCGIDI_decaySamplingInfo *decaySamplingInf 684 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 681 685 682 /* 686 /* 683 * Routines in MCGIDI_energy.c 687 * Routines in MCGIDI_energy.c 684 */ 688 */ 685 MCGIDI_energy *MCGIDI_energy_new( statusMessag 689 MCGIDI_energy *MCGIDI_energy_new( statusMessageReporting *smr ); 686 int MCGIDI_energy_initialize( statusMessageRep 690 int MCGIDI_energy_initialize( statusMessageReporting *smr, MCGIDI_energy *energy ); 687 MCGIDI_energy *MCGIDI_energy_free( statusMessa 691 MCGIDI_energy *MCGIDI_energy_free( statusMessageReporting *smr, MCGIDI_energy *energy ); 688 int MCGIDI_energy_release( statusMessageReport 692 int MCGIDI_energy_release( statusMessageReporting *smr, MCGIDI_energy *energy ); 689 int MCGIDI_energy_parseFromTOM( statusMessageR 693 int MCGIDI_energy_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms, 690 enum MCGIDI_energyType energyType, double 694 enum MCGIDI_energyType energyType, double gammaEnergy_MeV ); 691 int MCGIDI_energy_sampleEnergy( statusMessageR 695 int MCGIDI_energy_sampleEnergy( statusMessageReporting *smr, MCGIDI_energy *energy, MCGIDI_quantitiesLookupModes &modes, 692 MCGIDI_decaySamplingInfo *decaySamplingInf 696 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 693 697 694 /* 698 /* 695 * Routines in MCGIDI_energyAngular.c 699 * Routines in MCGIDI_energyAngular.c 696 */ 700 */ 697 int MCGIDI_energyAngular_parseFromTOM( statusM 701 int MCGIDI_energyAngular_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution ); 698 MCGIDI_energyAngular *MCGIDI_energyAngular_new 702 MCGIDI_energyAngular *MCGIDI_energyAngular_new( statusMessageReporting *smr ); 699 int MCGIDI_energyAngular_initialize( statusMes 703 int MCGIDI_energyAngular_initialize( statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular ); 700 MCGIDI_energyAngular *MCGIDI_energyAngular_fre 704 MCGIDI_energyAngular *MCGIDI_energyAngular_free( statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular ); 701 int MCGIDI_energyAngular_release( statusMessag 705 int MCGIDI_energyAngular_release( statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular ); 702 int MCGIDI_energyAngular_sampleDistribution( s 706 int MCGIDI_energyAngular_sampleDistribution( statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes, 703 MCGIDI_decaySamplingInfo *decaySamplingInf 707 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 704 708 705 /* 709 /* 706 * Routines in MCGIDI_angularEnergy.c 710 * Routines in MCGIDI_angularEnergy.c 707 */ 711 */ 708 MCGIDI_angularEnergy *MCGIDI_angularEnergy_new 712 MCGIDI_angularEnergy *MCGIDI_angularEnergy_new( statusMessageReporting *smr ); 709 int MCGIDI_angularEnergy_initialize( statusMes 713 int MCGIDI_angularEnergy_initialize( statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular ); 710 MCGIDI_angularEnergy *MCGIDI_angularEnergy_fre 714 MCGIDI_angularEnergy *MCGIDI_angularEnergy_free( statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular ); 711 int MCGIDI_angularEnergy_release( statusMessag 715 int MCGIDI_angularEnergy_release( statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular ); 712 int MCGIDI_angularEnergy_parseFromTOM( statusM 716 int MCGIDI_angularEnergy_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution ); 713 int MCGIDI_angularEnergy_sampleDistribution( s 717 int MCGIDI_angularEnergy_sampleDistribution( statusMessageReporting *smr, MCGIDI_angularEnergy *angularEnergy, MCGIDI_quantitiesLookupModes &modes, 714 MCGIDI_decaySamplingInfo *decaySamplingInf 718 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 715 719 716 /* 720 /* 717 * Routines in MCGIDI_KalbachMann.c 721 * Routines in MCGIDI_KalbachMann.c 718 */ 722 */ 719 MCGIDI_KalbachMann *MCGIDI_KalbachMann_new( st 723 MCGIDI_KalbachMann *MCGIDI_KalbachMann_new( statusMessageReporting *smr, ptwXY_interpolation interpolationWY, ptwXY_interpolation interpolationXY ); 720 int MCGIDI_KalbachMann_initialize( statusMessa 724 int MCGIDI_KalbachMann_initialize( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann, ptwXY_interpolation interpolationWY, ptwXY_interpolation interpolationXY ); 721 MCGIDI_KalbachMann *MCGIDI_KalbachMann_free( s 725 MCGIDI_KalbachMann *MCGIDI_KalbachMann_free( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann ); 722 int MCGIDI_KalbachMann_release( statusMessageR 726 int MCGIDI_KalbachMann_release( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann ); 723 int MCGIDI_KalbachMann_parseFromTOM( statusMes 727 int MCGIDI_KalbachMann_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution ); 724 int MCGIDI_KalbachMann_sampleEp( statusMessage 728 int MCGIDI_KalbachMann_sampleEp( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann, MCGIDI_quantitiesLookupModes &modes, 725 MCGIDI_decaySamplingInfo *decaySamplingInf 729 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 726 730 727 /* 731 /* 728 * Routines in MCGIDI_uncorrelated.c 732 * Routines in MCGIDI_uncorrelated.c 729 */ 733 */ 730 int MCGIDI_uncorrelated_parseFromTOM( statusMe 734 int MCGIDI_uncorrelated_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms, 731 enum MCGIDI_energyType energyType, double 735 enum MCGIDI_energyType energyType, double gammaEnergy_MeV ); 732 int MCGIDI_uncorrelated_sampleDistribution( st 736 int MCGIDI_uncorrelated_sampleDistribution( statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes, 733 MCGIDI_decaySamplingInfo *decaySamplingInf 737 MCGIDI_decaySamplingInfo *decaySamplingInfo ); 734 738 735 /* 739 /* 736 * Routines in MCGIDI_LLNLAngular_angularEnergy 740 * Routines in MCGIDI_LLNLAngular_angularEnergy.c 737 */ 741 */ 738 int MCGIDI_LLNLAngular_angularEnergy_parseFrom 742 int MCGIDI_LLNLAngular_angularEnergy_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution ); 739 743 740 /* 744 /* 741 * Routines in MCGIDI_kinetics.c 745 * Routines in MCGIDI_kinetics.c 742 */ 746 */ 743 int MCGIDI_kinetics_2BodyReaction( statusMessa 747 int MCGIDI_kinetics_2BodyReaction( statusMessageReporting *smr, MCGIDI_angular *angular, double K, double mu, double phi, 744 MCGIDI_sampledProductsData *outgoingDa 748 MCGIDI_sampledProductsData *outgoingData ); 745 int MCGIDI_kinetics_COMKineticEnergy2LabEnergy 749 int MCGIDI_kinetics_COMKineticEnergy2LabEnergyAndMomentum( statusMessageReporting *smr, double beta, double e_kinetic_com, double mu, double phi, 746 double m3cc, double m4cc, MCGIDI_sampl 750 double m3cc, double m4cc, MCGIDI_sampledProductsData *outgoingData ); 747 int MCGIDI_kinetics_COM2Lab( statusMessageRepo 751 int MCGIDI_kinetics_COM2Lab( statusMessageReporting *smr, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, double masses[3] ); 748 752 749 /* 753 /* 750 * Routines in MCGIDI_sampling.c 754 * Routines in MCGIDI_sampling.c 751 */ 755 */ 752 int MCGIDI_sampling_pdfsOfXGivenW_initialize( 756 int MCGIDI_sampling_pdfsOfXGivenW_initialize( statusMessageReporting *smr, MCGIDI_pdfsOfXGivenW *dists ); 753 int MCGIDI_sampling_pdfsOfXGivenW_release( sta 757 int MCGIDI_sampling_pdfsOfXGivenW_release( statusMessageReporting *smr, MCGIDI_pdfsOfXGivenW *dists ); 754 int MCGIDI_sampling_pdfsOfX_release( statusMes 758 int MCGIDI_sampling_pdfsOfX_release( statusMessageReporting *smr, MCGIDI_pdfOfX *dist ); 755 int MCGIDI_sampling_sampleX_from_pdfsOfXGivenW 759 int MCGIDI_sampling_sampleX_from_pdfsOfXGivenW( MCGIDI_pdfsOfXGivenW *dists, MCGIDI_pdfsOfXGivenW_sampled *sampled, double r ); 756 int MCGIDI_sampling_sampleX_from_pdfOfX( MCGID 760 int MCGIDI_sampling_sampleX_from_pdfOfX( MCGIDI_pdfOfX *dist, MCGIDI_pdfsOfXGivenW_sampled *sampled, double r ); 757 int MCGIDI_sampling_doubleDistribution( status 761 int MCGIDI_sampling_doubleDistribution( statusMessageReporting *smr, MCGIDI_pdfsOfXGivenW *pdfOfWGivenV, MCGIDI_pdfsOfXGivenW *pdfOfXGivenVAndW, 758 MCGIDI_quantitiesLookupModes &modes, M 762 MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo ); 759 int MCGIDI_sampling_interpolationValues( statu 763 int MCGIDI_sampling_interpolationValues( statusMessageReporting *smr, ptwXY_interpolation interpolation, double *ws, double y1, double y2, double *y ); 760 double MCGIDI_sampling_ptwXY_getValueAtX( ptwX 764 double MCGIDI_sampling_ptwXY_getValueAtX( ptwXYPoints *ptwXY, double x1 ); 761 765 762 /* 766 /* 763 * Routines in MCGIDI_misc.c 767 * Routines in MCGIDI_misc.c 764 */ 768 */ 765 int MCGIDI_misc_NumberOfZSymbols( void ); 769 int MCGIDI_misc_NumberOfZSymbols( void ); 766 const char *MCGIDI_misc_ZToSymbol( int iZ ); 770 const char *MCGIDI_misc_ZToSymbol( int iZ ); 767 int MCGIDI_misc_symbolToZ( const char *Z ); 771 int MCGIDI_misc_symbolToZ( const char *Z ); 768 int MCGIDI_miscNameToZAm( statusMessageReporti 772 int MCGIDI_miscNameToZAm( statusMessageReporting *smr, const char *name, int *Z, int *A, int *m, int *level ); 769 xDataTOM_Int MCGIDI_misc_binarySearch( xDataTO 773 xDataTOM_Int MCGIDI_misc_binarySearch( xDataTOM_Int n, double *ds, double d ); 770 int MCGIDI_misc_PQUStringToDouble( statusMessa 774 int MCGIDI_misc_PQUStringToDouble( statusMessageReporting *smr, char const *str, char const *unit, double conversion, double *value ); 771 int MCGIDI_misc_PQUStringToDoubleInUnitOf( sta 775 int MCGIDI_misc_PQUStringToDoubleInUnitOf( statusMessageReporting *smr, char const *str, char const *toUnit, double *value ); 772 void MCGIDI_misc_updateTransportabilitiesMap( 776 void MCGIDI_misc_updateTransportabilitiesMap( transportabilitiesMap *transportabilities, int PoPID, enum MCGIDI_transportability transportability ); 773 void MCGIDI_misc_updateTransportabilitiesMap2( 777 void MCGIDI_misc_updateTransportabilitiesMap2( transportabilitiesMap *transportabilities, int PoPID, int transportable ); 774 778 775 #if defined __cplusplus 779 #if defined __cplusplus 776 } 780 } 777 } 781 } 778 #endif 782 #endif 779 783 780 #endif /* End of MCGIDI_h_included. * 784 #endif /* End of MCGIDI_h_included. */ 781 785