Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/include/MCGIDI.h

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/include/MCGIDI.h (Version 11.3.0) and /processes/hadronic/models/lend/include/MCGIDI.h (Version 10.5.p1)


  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