Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:59:31

0001 /*
0002 # <<BEGIN-copyright>>
0003 # <<END-copyright>>
0004 */
0005 #ifndef MCGIDI_h_included
0006 #define MCGIDI_h_included
0007 
0008 #define MCGIDI_VERSION_MAJOR 1
0009 #define MCGIDI_VERSION_MINOR 0
0010 #define MCGIDI_VERSION_PATCHLEVEL 0
0011 
0012 #include <GIDI_settings.hh>
0013 #include <map>
0014 #include <vector>
0015 
0016 #include <statusMessageReporting.h>
0017 #include <ptwXY.h>
0018 #include <xDataTOM.h>
0019 
0020 #include "MCGIDI_mass.h"
0021 #include "MCGIDI_map.h"
0022 
0023 /* Disable Effective C++ warnings in GIDI code. */
0024 #if __INTEL_COMPILER > 1399
0025 #pragma warning( disable:2021 )
0026 #pragma warning( disable:593 )
0027 #pragma warning( disable:111 )
0028 #elif __INTEL_COMPILER > 1199
0029 #pragma warning( disable:2304 )
0030 #endif
0031 
0032 #if defined __cplusplus
0033     extern "C" {
0034     namespace GIDI {
0035 #endif
0036 
0037 typedef struct MCGIDI_GammaBranching_s MCGIDI_GammaBranching;
0038 typedef struct MCGIDI_POP_s MCGIDI_POP;
0039 typedef struct MCGIDI_POPs_s MCGIDI_POPs;
0040 typedef struct MCGIDI_particle_s MCGIDI_particle;
0041 typedef struct MCGIDI_target_s MCGIDI_target;
0042 typedef struct MCGIDI_target_heated_info_s MCGIDI_target_heated_info;
0043 typedef struct MCGIDI_target_heated_sorted_s MCGIDI_target_heated_sorted;
0044 typedef struct MCGIDI_target_heated_s MCGIDI_target_heated;
0045 typedef struct MCGIDI_reaction_s MCGIDI_reaction;
0046 typedef struct MCGIDI_outputChannel_s MCGIDI_outputChannel;
0047 typedef struct MCGIDI_product_s MCGIDI_product;
0048 typedef struct MCGIDI_distribution_s MCGIDI_distribution;
0049 typedef struct MCGIDI_KalbachMann_s MCGIDI_KalbachMann;
0050 typedef struct MCGIDI_KalbachMann_ras_s MCGIDI_KalbachMann_ras;
0051 typedef struct MCGIDI_pdfOfX_s MCGIDI_pdfOfX;
0052 typedef struct MCGIDI_pdfsOfXGivenW_s MCGIDI_pdfsOfXGivenW;
0053 typedef struct MCGIDI_pdfsOfXGivenW_sampled_s MCGIDI_pdfsOfXGivenW_sampled;
0054 typedef struct MCGIDI_angular_s MCGIDI_angular;
0055 typedef struct MCGIDI_energyWeightedFunctional_s MCGIDI_energyWeightedFunctional;
0056 typedef struct MCGIDI_energyWeightedFunctionals_s MCGIDI_energyWeightedFunctionals;
0057 typedef struct MCGIDI_energyNBodyPhaseSpace_s MCGIDI_energyNBodyPhaseSpace;
0058 typedef struct MCGIDI_energy_s MCGIDI_energy;
0059 typedef struct MCGIDI_energyAngular_s MCGIDI_energyAngular;
0060 typedef struct MCGIDI_angularEnergy_s MCGIDI_angularEnergy;
0061 
0062 typedef struct MCGIDI_decaySamplingInfo_s MCGIDI_decaySamplingInfo;
0063 typedef struct MCGIDI_productsInfo_s MCGIDI_productsInfo;
0064 typedef struct MCGIDI_productInfo_s MCGIDI_productInfo;
0065 typedef struct MCGIDI_sampledProductsData_s MCGIDI_sampledProductsData;
0066 typedef struct MCGIDI_sampledProductsDatas_s MCGIDI_sampledProductsDatas;
0067 
0068 #if defined __cplusplus
0069     }
0070     }
0071 #endif
0072 
0073 enum MCGIDI_quantityLookupMode {      
0074     MCGIDI_quantityLookupMode_pointwise     /**< Pointwise data are used to determine a quantity's value an energy E. */,
0075     MCGIDI_quantityLookupMode_grouped       /**< Grouped data are used to determine a quantity's value an energy E. */
0076 };
0077 
0078 class MCGIDI_quantitiesLookupModes {
0079 
0080     private:
0081         int mProjectilesPOPID;
0082         double mProjectileEnergy;
0083         int mGroupIndex;
0084         double mProjectileEnergyForGroupIndex;
0085         double mTemperature;
0086         enum MCGIDI_quantityLookupMode mCrossSectionMode;
0087         enum MCGIDI_quantityLookupMode mMultiplicityMode;
0088 
0089     public:
0090         MCGIDI_quantitiesLookupModes( int projectilesPOPID );
0091         ~MCGIDI_quantitiesLookupModes( );
0092 
0093         inline double getProjectileEnergy( void ) const { return( mProjectileEnergy ); }
0094         void setProjectileEnergy( double e_in ) { mProjectileEnergy = e_in; }
0095 
0096         inline int getGroupIndex( void ) const { return( mGroupIndex ); }
0097         int setGroupIndex( GIDI_settings const &settings, bool encloseOutOfRange );
0098 
0099         inline double getTemperature( void ) const { return( mTemperature ); }
0100         void setTemperature( double temperature ) { mTemperature = temperature; }
0101 
0102         enum MCGIDI_quantityLookupMode getMode( std::string const &quantity ) const;
0103         enum MCGIDI_quantityLookupMode getCrossSectionMode( void ) const { return( mCrossSectionMode ); };
0104         std::vector<std::string> getListOfLookupQuanities( ) const;
0105         void setMode( std::string const &quantity, enum MCGIDI_quantityLookupMode mode );
0106         void setCrossSectionMode( enum MCGIDI_quantityLookupMode mode ) { mCrossSectionMode = mode; };
0107         void setModeAll( enum MCGIDI_quantityLookupMode mode );
0108 };
0109 
0110 typedef struct MCGIDI_samplingMultiplicityBias_s MCGIDI_samplingMultiplicityBias;
0111 
0112 struct MCGIDI_samplingMultiplicityBias_s {
0113     int PoPID;
0114     double multiplicityFactor;
0115 };
0116 
0117 class MCGIDI_samplingMethods {
0118 
0119     public:
0120         MCGIDI_samplingMethods( );
0121         ~MCGIDI_samplingMethods( );
0122 };
0123 
0124 class MCGIDI_samplingSettings {
0125 
0126     private:                    // This is user input.
0127         enum GIDI::xDataTOM_frame mWantFrame;
0128         bool mWantVelocities;
0129         double (*mRng)( void * );
0130         void *mRngState;
0131         std::vector<struct MCGIDI_samplingMultiplicityBias_s> mSamplingMultiplicityBiases;
0132 
0133     public:                     // Temporary variables used in MCGIDI sampling routines.
0134         enum GIDI::xDataTOM_frame mGotFrame;
0135         GIDI::MCGIDI_POP *mPoP;
0136         double mMu;
0137         double mEp;
0138 
0139     public:
0140         MCGIDI_samplingSettings( enum GIDI::xDataTOM_frame frame, bool wantVelocities, double (*rng)( void * ), void *rngState );
0141         ~MCGIDI_samplingSettings( );
0142 
0143         inline double getProductMultiplicityBias( int PoPID ) const {
0144                 for( int i1 = 0; i1 < (int) mSamplingMultiplicityBiases.size( ); ++i1 ) {
0145                     if( PoPID == mSamplingMultiplicityBiases[i1].PoPID ) return( mSamplingMultiplicityBiases[i1].multiplicityFactor );
0146                 }
0147                 return( 1. ); }
0148         int setProductMultiplicityBias( GIDI::statusMessageReporting *smr, int PoPID, double fractor );
0149 };
0150 
0151 #if defined __cplusplus
0152     extern "C" {
0153     namespace GIDI {
0154 #endif
0155 
0156 enum MCGIDI_transportability {                          /**< This enum is used to give the transportability status for a particle in a reaction or target. */
0157     MCGIDI_transportability_unknown,                    /**< Particle is not a product of this reaction or target. */
0158     MCGIDI_transportability_none,                       /**< Particle is a product but has not distribution data. */
0159     MCGIDI_transportability_partial,                    /**< Particle is a product and has some distribution data. */
0160     MCGIDI_transportability_full };                     /**< Particle is a product and all needed distribution data. */
0161 
0162 #if defined __cplusplus
0163     }
0164     }
0165 #endif
0166 
0167 typedef std::map<int, enum GIDI::MCGIDI_transportability> transportabilitiesMap;
0168 
0169 #if defined __cplusplus
0170     extern "C" {
0171     namespace GIDI {
0172 #endif
0173 
0174 #define MCGIDI_crossSectionType_grouped 1
0175 #define MCGIDI_crossSectionType_pointwise 2
0176 
0177 #define MCGIDI_nullReaction -10001
0178 
0179 #define MCGIDI_speedOfLight_cm_sec 2.99792458e10
0180 #define MCGIDI_AMU2MeV 931.494028
0181 
0182 enum MCGIDI_reactionType { 
0183     MCGIDI_reactionType_unknown_e,                      /* This should never happen. */
0184     MCGIDI_reactionType_null_e,                         /* Only occurs when sampling with from grouped cross sections and the projectile is below threshold. */
0185     MCGIDI_reactionType_elastic_e,                      /* A nuclear elastic reaction. */
0186     MCGIDI_reactionType_scattering_e,                   /* A nuclear reaction where the projectile and target are products as well as gammas, 
0187                                                             excluding reactions that are MCGIDI_reactionType_elastic_e and 
0188                                                             MCGIDI_reactionType_nuclearLevelTransition_e. */
0189     MCGIDI_reactionType_nuclearIsomerTransmutation_e,   /* A nuclear that changes N or Z and is not one of the others.*/
0190     MCGIDI_reactionType_nuclearLevelTransition_e,       /* Reaction in which the residual is the same isotope as the target but in a
0191                                                             different nuclear level. Mainly for meta-stables. */
0192     MCGIDI_reactionType_capture_e,                      /* A nuclear capture reaction. */
0193     MCGIDI_reactionType_fission_e,                      /* A nuclear fission reaction. */
0194     MCGIDI_reactionType_sumOfRemainingOutputChannels_e, /* ENDF MT 5 reactions. */
0195     MCGIDI_reactionType_atomic_e                        
0196 };
0197 
0198 enum MCGIDI_channelGenre { MCGIDI_channelGenre_undefined_e, MCGIDI_channelGenre_twoBody_e, MCGIDI_channelGenre_uncorrelated_e, 
0199     MCGIDI_channelGenre_sumOfRemaining_e, MCGIDI_channelGenre_twoBodyDecay_e, MCGIDI_channelGenre_uncorrelatedDecay_e };
0200 
0201 enum MCGIDI_productMultiplicityType { MCGIDI_productMultiplicityType_invalid_e, MCGIDI_productMultiplicityType_unknown_e, MCGIDI_productMultiplicityType_integer_e,
0202     MCGIDI_productMultiplicityType_energyDependent_e, MCGIDI_productMultiplicityType_gammaBranching_e, MCGIDI_productMultiplicityType_mixed_e };
0203 
0204 enum MCGIDI_distributionType { MCGIDI_distributionType_none_e, MCGIDI_distributionType_unknown_e, MCGIDI_distributionType_angular_e, 
0205     MCGIDI_distributionType_KalbachMann_e, MCGIDI_distributionType_uncorrelated_e, MCGIDI_distributionType_energyAngular_e, 
0206     MCGIDI_distributionType_angularEnergy_e };
0207 
0208 enum MCGIDI_angularType { MCGIDI_angularType_isotropic, MCGIDI_angularType_recoil, MCGIDI_angularType_linear };
0209 
0210 enum MCGIDI_energyType { MCGIDI_energyType_unknown, MCGIDI_energyType_primaryGamma, MCGIDI_energyType_discreteGamma, 
0211     MCGIDI_energyType_linear, MCGIDI_energyType_generalEvaporation, MCGIDI_energyType_simpleMaxwellianFission, MCGIDI_energyType_evaporation, 
0212         MCGIDI_energyType_Watt, MCGIDI_energyType_MadlandNix, MCGIDI_energyType_NBodyPhaseSpace, MCGIDI_energyType_weightedFunctional };
0213 
0214 extern const char *MCGIDI_productGenre_unknown, *MCGIDI_productGenre_twoBody_angular, *MCGIDI_productGenre_twoBody_formFactor,
0215     *MCGIDI_productGenre_NBody_angular_energy, *MCGIDI_productGenre_NBody_pairProduction;
0216 
0217 #define MCGIDI_particleLevel_continuum -1
0218 #define MCGIDI_particleLevel_sum -2
0219 
0220 struct MCGIDI_GammaBranching_s {
0221     MCGIDI_POP *finalLevel;
0222     double probability;
0223 };
0224 
0225 struct MCGIDI_POP_s {
0226     MCGIDI_POP *next;
0227     MCGIDI_POP *parent;
0228     char *name;
0229     int globalPoPsIndex;        /* Index of particle in the PoPs library if particle can be return to packages using */
0230     int Z, A, level, m;         /* this library. Otherwise, -1. */
0231     double mass_MeV;
0232     double level_MeV;
0233     int numberOfGammaBranchs;
0234     MCGIDI_GammaBranching *gammas;
0235 };
0236 
0237 struct MCGIDI_POPs_s {
0238     int numberOfPOPs, size, increment;
0239     MCGIDI_POP *first, *last, **sorted;
0240 };
0241 
0242 struct MCGIDI_particle_s {
0243     MCGIDI_particle *prior;
0244     MCGIDI_particle *next;
0245     int ordinal;
0246     int Z, A, m;
0247     double mass_MeV;
0248     char *name;
0249 };
0250 
0251 struct MCGIDI_decaySamplingInfo_s {
0252     enum xDataTOM_frame frame;                  /* The frame the product data are in. */
0253     int isVelocity;                             /* See struct MCGIDI_sampledProductsData_s for meaning. This is user input. */
0254     double (*rng)( void * );                    /* User supplied rng. */
0255     void *rngState;                             /* User supplied rng state. */
0256     MCGIDI_POP *pop;                            /* pop for the sampled product. */
0257     double mu;                                  /* mu = cos( theta ) for the sampled product. Frame is given by frame member. */
0258     double Ep;                                  /* Energy of the product. Frame is given by frame member. */
0259 };
0260 
0261 struct MCGIDI_productInfo_s {
0262     int globalPoPsIndex;
0263     enum MCGIDI_productMultiplicityType productMultiplicityType;
0264     int multiplicity;
0265     int transportable;
0266 };
0267 
0268 struct MCGIDI_productsInfo_s {
0269     int numberOfProducts;
0270     int numberOfAllocatedProducts;
0271     MCGIDI_productInfo *productInfo;
0272 };
0273 
0274 struct MCGIDI_sampledProductsData_s {
0275     int isVelocity;             /* If true, px_vx, py_vy and pz_vz are velocities otherwise momenta. */
0276     MCGIDI_POP *pop;
0277     double kineticEnergy;
0278     double px_vx;
0279     double py_vy;
0280     double pz_vz;
0281     int delayedNeutronIndex;
0282     double delayedNeutronRate;
0283     double birthTimeSec;        /* Some products, like delayed fission neutrons, are to appear (be born) later. */
0284 };
0285 
0286 struct MCGIDI_sampledProductsDatas_s {
0287     int numberOfProducts;
0288     int numberAllocated;
0289     int incrementSize;
0290     MCGIDI_sampledProductsData *products;
0291 };
0292 
0293 struct MCGIDI_pdfOfX_s {
0294     int numberOfXs;
0295     double *Xs;
0296     double *pdf;
0297     double *cdf;
0298 };
0299 
0300 struct MCGIDI_pdfsOfXGivenW_s {
0301     int numberOfWs;
0302     ptwXY_interpolation interpolationWY, interpolationXY;
0303     double *Ws;
0304     MCGIDI_pdfOfX *dist;
0305 };
0306 
0307 struct MCGIDI_pdfsOfXGivenW_sampled_s {
0308     statusMessageReporting *smr;
0309     ptwXY_interpolation interpolationWY, interpolationXY;
0310     int iW, iX1, iX2;
0311     double x, w, frac;
0312 };
0313 
0314 struct MCGIDI_angular_s {
0315     enum xDataTOM_frame frame;
0316     enum MCGIDI_angularType type;
0317     MCGIDI_angular *recoilProduct;
0318     MCGIDI_pdfsOfXGivenW dists;
0319     double projectileMass_MeV, targetMass_MeV, productMass_MeV, residualMass_MeV;
0320 };
0321 
0322 struct MCGIDI_energyWeightedFunctional_s {
0323     ptwXYPoints *weight;
0324     MCGIDI_energy *energy;
0325 };
0326 
0327 struct MCGIDI_energyWeightedFunctionals_s {
0328     int numberOfWeights;
0329     MCGIDI_energyWeightedFunctional weightedFunctional[4];      /* ??????????? Hardwired for no good reason. Will handle up to a (z,4n) reaction. */
0330 };
0331 
0332 struct MCGIDI_energyNBodyPhaseSpace_s {
0333     int numberOfProducts;
0334     double mass, massFactor, e_inCOMFactor, Q_MeV;
0335 };
0336 
0337 struct MCGIDI_energy_s {
0338     enum xDataTOM_frame frame;
0339     enum MCGIDI_energyType type;
0340     double gammaEnergy_MeV;
0341     double primaryGammaMassFactor;
0342     double e_inCOMFactor;
0343     MCGIDI_pdfsOfXGivenW dists;
0344     double U;
0345     ptwXYPoints *theta, *Watt_a, *Watt_b;
0346     ptwXY_interpolation gInterpolation;
0347     MCGIDI_pdfOfX g;
0348     MCGIDI_energyWeightedFunctionals weightedFunctionals;
0349     MCGIDI_energyNBodyPhaseSpace NBodyPhaseSpace;
0350 };
0351 
0352 struct MCGIDI_energyAngular_s {
0353     enum xDataTOM_frame frame;
0354     MCGIDI_pdfsOfXGivenW pdfOfEpGivenE;
0355     MCGIDI_pdfsOfXGivenW *pdfOfMuGivenEAndEp;   /* The number of MCGIDI_pdfsOfXGivenW allocated is given by pdfOfEpGivenE.numberOfWs. */
0356 };
0357 
0358 struct MCGIDI_angularEnergy_s {
0359     enum xDataTOM_frame frame;
0360     MCGIDI_pdfsOfXGivenW pdfOfMuGivenE;
0361     MCGIDI_pdfsOfXGivenW *pdfOfEpGivenEAndMu;   /* The number of MCGIDI_pdfsOfXGivenW allocated is given by pdfOfMuGivenE.numberOfWs. */
0362 };
0363 
0364 struct MCGIDI_KalbachMann_ras_s {
0365     double *rs;
0366     double *as;
0367 };
0368 
0369 struct MCGIDI_KalbachMann_s {
0370     enum xDataTOM_frame frame;
0371     double energyToMeVFactor, massFactor, Sa, Sb, Ma, mb;           /* Needed if a(E,E') is caluclated from the formula. */
0372     MCGIDI_pdfsOfXGivenW dists;                             /* Sa currently not used. */
0373     MCGIDI_KalbachMann_ras *ras;
0374 };
0375 
0376 struct MCGIDI_distribution_s {
0377     MCGIDI_product *product;
0378     enum MCGIDI_distributionType type;
0379     MCGIDI_angular *angular;                /* All distribution forms must have a frame member. */
0380     MCGIDI_energy *energy;
0381     MCGIDI_energyAngular *energyAngular;
0382     MCGIDI_angularEnergy *angularEnergy;
0383     MCGIDI_KalbachMann *KalbachMann;
0384 };
0385 
0386 struct MCGIDI_outputChannel_s {
0387     enum MCGIDI_channelGenre genre;
0388     MCGIDI_reaction *reaction;              /* This is only used for output channels. */
0389     MCGIDI_product *parent;                 /* This is only used for decay channels. */
0390     int QIsFloat;
0391     double Q;
0392     int numberOfProducts;
0393     MCGIDI_product *products;
0394 };
0395 
0396 struct MCGIDI_product_s {
0397     MCGIDI_POP *pop;
0398     char *label;
0399     MCGIDI_outputChannel *outputChannel;
0400     int multiplicity;                                       /* If 0, the multiplicity is either 'energyDependent' or 'partialProduction'. */
0401     int delayedNeutronIndex;
0402     double delayedNeutronRate;
0403     ptwXYPoints *multiplicityVsEnergy;
0404     ptwXYPoints *norms;
0405     int numberOfPiecewiseMultiplicities;
0406     ptwXYPoints **piecewiseMultiplicities;
0407     MCGIDI_distribution distribution;
0408     MCGIDI_outputChannel decayChannel;
0409 };
0410 
0411 struct MCGIDI_reaction_s {
0412     MCGIDI_target_heated *target;
0413     int ENDF_MT, ENDL_C, ENDL_S;
0414     enum MCGIDI_reactionType reactionType;
0415     char const *outputChannelStr;
0416     xDataTOM_attributionList attributes;            /* Do not free, owned by attributes. */
0417     int domainValuesPresent;                        /* True if cross section data defined so EMin and EMax are value. */
0418     int thresholdGroupIndex;                        /* For grouped data, the group index where threshold starts. */
0419     double thresholdGroupDomain;                    /* This is groupEnergy[thresholdGroupIndex+1] - EMin. */
0420     double thresholdGroupedDeltaCrossSection;       /* The adjusted group cross section in group thresholdGroupIndex. */
0421     double EMin, EMax, finalQ;                      /* BRB, EMin is used as threshold. However, some reactions, especially charged particle */
0422     ptwXYPoints *crossSection;                      /* have effective thresholds much higher than EMin, may need to handle these differently??????? */
0423     ptwXPoints *crossSectionGrouped;
0424     MCGIDI_outputChannel outputChannel;
0425     MCGIDI_productsInfo productsInfo;               /* See MCGIDI_reaction_ParseDetermineReactionProducts for description. */
0426     transportabilitiesMap *transportabilities;
0427 };
0428 
0429 struct MCGIDI_target_heated_s {
0430     int ordinal;
0431     char *path;            /* Partial path of input file. */
0432     char *absPath;         /* Full absolute path of input file. */
0433     MCGIDI_POPs pops;
0434     MCGIDI_POP *projectilePOP;
0435     MCGIDI_POP *targetPOP;
0436     xDataTOM_attributionList attributes;
0437     char *contents;
0438     double temperature_MeV;
0439     double EMin, EMax;
0440     ptwXYPoints *crossSection;
0441     ptwXPoints *crossSectionGrouped;
0442     ptwXPoints *crossSectionGroupedForSampling;
0443     int numberOfReactions;
0444     MCGIDI_reaction *reactions;
0445     transportabilitiesMap *transportabilities;
0446 };
0447 
0448 struct MCGIDI_target_heated_info_s {
0449     int ordinal;
0450     double temperature;
0451     char *path;                 /* Full path of input file. */
0452     char *contents;
0453     MCGIDI_target_heated *heatedTarget;
0454 };
0455 
0456 struct MCGIDI_target_s {
0457     char *path;                 /* Full path of input file. */
0458     char *absPath;              /* Full absolute path of input file. */
0459     MCGIDI_POP *projectilePOP;
0460     MCGIDI_POP *targetPOP;
0461     xDataTOM_attributionList attributes;
0462     int nHeatedTargets, nReadHeatedTargets;
0463     MCGIDI_target_heated *baseHeatedTarget;   /* The lowest temperature whose contents is "all" data, (e.g, not just "crossSection"). */
0464     MCGIDI_target_heated_info *heatedTargets;         /* List of heated targets in order by temperature. */
0465     MCGIDI_target_heated_info **readHeatedTargets;    /* List of "read in" heated targets in order by temperature. */
0466 };
0467 
0468 char const *MCGIDI_version( void );
0469 int MCGIDI_versionMajor( void );
0470 int MCGIDI_versionMinor( void );
0471 int MCGIDI_versionPatchLevel( void );
0472 
0473 /*
0474 * Routines in MCGIDI_target.c
0475 */
0476 MCGIDI_target *MCGIDI_target_new( statusMessageReporting *smr );
0477 int MCGIDI_target_initialize( statusMessageReporting *smr, MCGIDI_target *target );
0478 MCGIDI_target *MCGIDI_target_newRead( statusMessageReporting *smr, const char *fileName );
0479 int MCGIDI_target_readFromMapViaPoPIDs( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_map *map, const char *evaluation,
0480         int projectile_PoPID, int target_PoPID );
0481 int MCGIDI_target_readFromMap( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_map *map, const char *evaluation, const char *projectileName, 
0482     const char *targetName );
0483 MCGIDI_target *MCGIDI_target_newReadFromMapViaPoPIDs( statusMessageReporting *smr, MCGIDI_map *map, const char *evaluation,
0484         int projectile_PoPID, int target_PoPID );
0485 MCGIDI_target *MCGIDI_target_newReadFromMap( statusMessageReporting *smr, MCGIDI_map *map, const char *evaluation, const char *projectileName, 
0486     const char *targetName );
0487 MCGIDI_target *MCGIDI_target_free( statusMessageReporting *smr, MCGIDI_target *target );
0488 int MCGIDI_target_release( statusMessageReporting *smr, MCGIDI_target *target );
0489 int MCGIDI_target_read( statusMessageReporting *smr, MCGIDI_target *target, const char *fileName );
0490 char const *MCGIDI_target_getAttributesValue( statusMessageReporting *smr, MCGIDI_target *target, char const *name );
0491 int MCGIDI_target_getTemperatures( statusMessageReporting *smr, MCGIDI_target *target, double *temperatures );
0492 int MCGIDI_target_readHeatedTarget( statusMessageReporting *smr, MCGIDI_target *target, int index );
0493 MCGIDI_target_heated *MCGIDI_target_getHeatedTargetAtIndex_ReadIfNeeded( statusMessageReporting *smr, MCGIDI_target *target, int index );
0494 MCGIDI_target_heated *MCGIDI_target_getHeatedTargetAtTIndex( statusMessageReporting *smr, MCGIDI_target *target, int index );
0495 
0496 int MCGIDI_target_numberOfReactions( statusMessageReporting *smr, MCGIDI_target *target );
0497 enum MCGIDI_reactionType MCGIDI_target_getReactionTypeAtIndex( statusMessageReporting *smr, MCGIDI_target *target, int index );
0498 MCGIDI_reaction *MCGIDI_target_getReactionAtIndex( MCGIDI_target *target, int index );
0499 MCGIDI_reaction *MCGIDI_target_getReactionAtIndex_smr( statusMessageReporting *smr, MCGIDI_target *target, int index );
0500 int MCGIDI_target_numberOfProductionReactions( statusMessageReporting *smr, MCGIDI_target *target );
0501 
0502 transportabilitiesMap const *MCGIDI_target_getUniqueProducts( statusMessageReporting *smr, MCGIDI_target *target );
0503 int MCGIDI_target_recast( statusMessageReporting *smr, MCGIDI_target *target, GIDI_settings &settings );
0504 
0505 int MCGIDI_target_getDomain( statusMessageReporting *smr, MCGIDI_target *target, double *EMin, double *EMax );
0506 double MCGIDI_target_getTotalCrossSectionAtTAndE( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_quantitiesLookupModes &modes,
0507         bool sampling );
0508 double MCGIDI_target_getIndexReactionCrossSectionAtE( statusMessageReporting *smr, MCGIDI_target *target, int index, MCGIDI_quantitiesLookupModes &modes,
0509         bool sampling );
0510 int MCGIDI_target_sampleReaction( statusMessageReporting *smr, MCGIDI_target *target, MCGIDI_quantitiesLookupModes &modes, double totalXSec, 
0511         double (*userrng)( void * ), void *rngState );
0512 int MCGIDI_target_sampleNullReactionProductsAtE( statusMessageReporting *smr, MCGIDI_target *target,
0513     MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productDatas );
0514 int MCGIDI_target_sampleIndexReactionProductsAtE( statusMessageReporting *smr, MCGIDI_target *target, int index, 
0515         MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productData );
0516 double MCGIDI_target_getIndexReactionFinalQ( statusMessageReporting *smr, MCGIDI_target *target, int index, MCGIDI_quantitiesLookupModes &modes );
0517 
0518 /*
0519 * Routines in MCGIDI_target_heated.c
0520 */
0521 MCGIDI_target_heated *MCGIDI_target_heated_new( statusMessageReporting *smr );
0522 int MCGIDI_target_heated_initialize( statusMessageReporting *smr, MCGIDI_target_heated *target );
0523 MCGIDI_target_heated *MCGIDI_target_heated_newRead( statusMessageReporting *smr, const char *fileName );
0524 MCGIDI_target_heated *MCGIDI_target_heated_free( statusMessageReporting *smr, MCGIDI_target_heated *target );
0525 int MCGIDI_target_heated_release( statusMessageReporting *smr, MCGIDI_target_heated *target );
0526 int MCGIDI_target_heated_read( statusMessageReporting *smr, MCGIDI_target_heated *target, const char *fileName );
0527 int MCGIDI_target_heated_numberOfReactions( statusMessageReporting *smr, MCGIDI_target_heated *target );
0528 int MCGIDI_target_heated_numberOfProductionReactions( statusMessageReporting *smr, MCGIDI_target_heated *target );
0529 MCGIDI_reaction *MCGIDI_target_heated_getReactionAtIndex( MCGIDI_target_heated *target, int index );
0530 MCGIDI_reaction *MCGIDI_target_heated_getReactionAtIndex_smr( statusMessageReporting *smr, MCGIDI_target_heated *target, int index );
0531 #if 0
0532 MCGIDI_reaction *MCGIDI_target_heated_getProductionReactionAtIndex( MCGIDI_target_heated *target, int index );
0533 #endif
0534 MCGIDI_POP *MCGIDI_target_heated_getPOPForProjectile( statusMessageReporting *smr, MCGIDI_target_heated *target );
0535 MCGIDI_POP *MCGIDI_target_heated_getPOPForTarget( statusMessageReporting *smr, MCGIDI_target_heated *target );
0536 double MCGIDI_target_heated_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_target_heated *target );
0537 double MCGIDI_target_heated_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_target_heated *target );
0538 int MCGIDI_target_heated_getEnergyGrid( statusMessageReporting *smr, MCGIDI_target_heated *target, double **energyGrid );
0539 double MCGIDI_target_heated_getTotalCrossSectionAtE( statusMessageReporting *smr, MCGIDI_target_heated *target, MCGIDI_quantitiesLookupModes &modes,
0540         bool sampling );
0541 double MCGIDI_target_heated_getIndexReactionCrossSectionAtE( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, 
0542         MCGIDI_quantitiesLookupModes &modes, bool sampling );
0543 int MCGIDI_target_heated_sampleIndexReactionProductsAtE( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, 
0544         MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productData );
0545 double MCGIDI_target_heated_getReactionsThreshold( statusMessageReporting *smr, MCGIDI_target_heated *target, int index );
0546 int MCGIDI_target_heated_getReactionsDomain( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, double *EMin, double *EMax );
0547 double MCGIDI_target_heated_getIndexReactionFinalQ( statusMessageReporting *smr, MCGIDI_target_heated *target, int index, 
0548         MCGIDI_quantitiesLookupModes &modes );
0549 
0550 transportabilitiesMap const *MCGIDI_target_heated_getUniqueProducts( statusMessageReporting *smr, MCGIDI_target_heated *target );
0551 int MCGIDI_target_heated_recast( statusMessageReporting *smr, MCGIDI_target_heated *target, GIDI_settings &settings );
0552 
0553 /*
0554 * Routines in MCGIDI_reaction.c
0555 */
0556 MCGIDI_reaction *MCGIDI_reaction_new( statusMessageReporting *smr );
0557 int MCGIDI_reaction_initialize( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0558 MCGIDI_reaction *MCGIDI_reaction_free( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0559 int MCGIDI_reaction_release( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0560 int MCGIDI_reaction_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_target_heated *target, 
0561     MCGIDI_POPs *pops, MCGIDI_reaction *reaction );
0562 enum MCGIDI_reactionType MCGIDI_reaction_getReactionType( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0563 MCGIDI_target_heated *MCGIDI_reaction_getTargetHeated( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0564 double MCGIDI_reaction_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0565 double MCGIDI_reaction_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_reaction *reaction );
0566 int MCGIDI_reaction_getDomain( statusMessageReporting *smr, MCGIDI_reaction *reaction, double *EMin, double *EMax );
0567 int MCGIDI_reaction_fixDomains( statusMessageReporting *smr, MCGIDI_reaction *reaction, double EMin, double EMax, nfu_status *status );
0568 double MCGIDI_reaction_getCrossSectionAtE( statusMessageReporting *smr, MCGIDI_reaction *reaction, MCGIDI_quantitiesLookupModes &modes, bool sampling );
0569 double MCGIDI_reaction_getFinalQ( statusMessageReporting *smr, MCGIDI_reaction *reaction, MCGIDI_quantitiesLookupModes &modes );
0570 int MCGIDI_reaction_getENDF_MTNumber( MCGIDI_reaction *reaction );
0571 int MCGIDI_reaction_getENDL_CSNumbers( MCGIDI_reaction *reaction, int *S );
0572 int MCGIDI_reaction_recast( statusMessageReporting *smr, MCGIDI_reaction *reaction, GIDI_settings &settings, 
0573     GIDI_settings_particle const *projectileSettings, double temperature_MeV, ptwXPoints *totalGroupedCrossSection );
0574 
0575 MCGIDI_productsInfo *MCGIDI_reaction_getProductsInfo( MCGIDI_reaction *reaction );
0576 int MCGIDI_productsInfo_getNumberOfUniqueProducts( MCGIDI_productsInfo *productsInfo );
0577 int MCGIDI_productsInfo_getPoPsIndexAtIndex( MCGIDI_productsInfo *productsInfo, int index );
0578 enum MCGIDI_productMultiplicityType MCGIDI_productsInfo_getMultiplicityTypeAtIndex( MCGIDI_productsInfo *productsInfo, int index );
0579 int MCGIDI_productsInfo_getIntegerMultiplicityAtIndex( MCGIDI_productsInfo *productsInfo, int index );
0580 int MCGIDI_productsInfo_getTransportableAtIndex( MCGIDI_productsInfo *productsInfo, int index );
0581 
0582 /*
0583 * Routines in MCGIDI_pop.c
0584 */
0585 MCGIDI_POPs *MCGIDI_POPs_new( statusMessageReporting *smr, int size );
0586 int MCGIDI_POPs_initial( statusMessageReporting *smr, MCGIDI_POPs *pops, int size );
0587 void *MCGIDI_POPs_free( MCGIDI_POPs *pops );
0588 int MCGIDI_POPs_release( MCGIDI_POPs *pops );
0589 MCGIDI_POP *MCGIDI_POPs_addParticleIfNeeded( statusMessageReporting *smr, MCGIDI_POPs *pops, char const *name, double mass_MeV, 
0590     double level_MeV, MCGIDI_POP *parent, int globalParticle );
0591 int MCGIDI_POPs_findParticleIndex( MCGIDI_POPs *pops, char const *name );
0592 MCGIDI_POP *MCGIDI_POPs_findParticle( MCGIDI_POPs *pops, char const *name );
0593 void MCGIDI_POPs_writeSortedList( MCGIDI_POPs *pops, FILE *f );
0594 void MCGIDI_POPs_printSortedList( MCGIDI_POPs *pops );
0595 
0596 MCGIDI_POP *MCGIDI_POP_new( statusMessageReporting *smr, char const *name, double mass_MeV, double level_MeV, MCGIDI_POP *parent );
0597 MCGIDI_POP *MCGIDI_POP_free( MCGIDI_POP *pop );
0598 MCGIDI_POP *MCGIDI_POP_release( MCGIDI_POP *pop );
0599 double MCGIDI_POP_getMass_MeV( MCGIDI_POP *pop );
0600 
0601 /*
0602 * Routines in MCGIDI_particle.c
0603 */
0604 MCGIDI_particle *MCGIDI_particle_new( statusMessageReporting *smr );
0605 int MCGIDI_particle_initialize( statusMessageReporting *smr, MCGIDI_particle *particle );
0606 MCGIDI_particle *MCGIDI_particle_free( statusMessageReporting *smr, MCGIDI_particle *particle );
0607 int MCGIDI_particle_release( statusMessageReporting *smr, MCGIDI_particle *particle );
0608 int MCGIDI_particle_freeInternalList( statusMessageReporting *smr );
0609 MCGIDI_particle *MCGIDI_particle_getInternalID( statusMessageReporting *smr, const char * const name, MCGIDI_POPs *pops );
0610 int MCGIDI_particle_printInternalSortedList( statusMessageReporting *smr );
0611 
0612 /*
0613 * Routines in MCGIDI_outputChannel.c
0614 */
0615 MCGIDI_outputChannel *MCGIDI_outputChannel_new( statusMessageReporting *smr );
0616 int MCGIDI_outputChannel_initialize( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel );
0617 MCGIDI_outputChannel *MCGIDI_outputChannel_free( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel );
0618 int MCGIDI_outputChannel_release( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel );
0619 int MCGIDI_outputChannel_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_POPs *pops, MCGIDI_outputChannel *outputChannel,
0620     MCGIDI_reaction *reaction, MCGIDI_product *parent );
0621 int MCGIDI_outputChannel_numberOfProducts( MCGIDI_outputChannel *outputChannel );
0622 MCGIDI_product *MCGIDI_outputChannel_getProductAtIndex( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, int i );
0623 int MCGIDI_outputChannel_getDomain( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double *EMin, double *EMax );
0624 MCGIDI_target_heated *MCGIDI_outputChannel_getTargetHeated( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel );
0625 double MCGIDI_outputChannel_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel );
0626 double MCGIDI_outputChannel_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel );
0627 double MCGIDI_outputChannel_getQ_MeV( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double e_in );
0628 double MCGIDI_outputChannel_getFinalQ( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, double e_in );
0629 int MCGIDI_outputChannel_sampleProductsAtE( statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, MCGIDI_quantitiesLookupModes &modes,
0630     MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productDatas, double *masses );
0631 
0632 /*
0633 * Routines in MCGIDI_product.c
0634 */
0635 MCGIDI_product *MCGIDI_product_new( statusMessageReporting *smr );
0636 int MCGIDI_product_initialize( statusMessageReporting *smr, MCGIDI_product *product );
0637 MCGIDI_product *MCGIDI_product_free( statusMessageReporting *smr, MCGIDI_product *product );
0638 int MCGIDI_product_release( statusMessageReporting *smr, MCGIDI_product *product );
0639 int MCGIDI_product_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_outputChannel *outputChannel,
0640         MCGIDI_POPs *pops, MCGIDI_product *product, int *delayedNeutronIndex );
0641 int MCGIDI_product_getDomain( statusMessageReporting *smr, MCGIDI_product *product, double *EMin, double *EMax );
0642 int MCGIDI_product_setTwoBodyMasses( statusMessageReporting *smr, MCGIDI_product *product, double projectileMass_MeV, double targetMass_MeV,
0643     double productMass_MeV, double residualMass_MeV );
0644 double MCGIDI_product_getMass_MeV( statusMessageReporting *smr, MCGIDI_product *product );
0645 MCGIDI_target_heated *MCGIDI_product_getTargetHeated( statusMessageReporting *smr, MCGIDI_product *product );
0646 double MCGIDI_product_getProjectileMass_MeV( statusMessageReporting *smr, MCGIDI_product *product );
0647 double MCGIDI_product_getTargetMass_MeV( statusMessageReporting *smr, MCGIDI_product *product );
0648 int MCGIDI_product_sampleMultiplicity( statusMessageReporting *smr, MCGIDI_product *product, double e_in, double r );
0649 int MCGIDI_product_sampleMu( statusMessageReporting *smr, MCGIDI_product *product, MCGIDI_quantitiesLookupModes &modes,
0650     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0651 
0652 int MCGIDI_sampledProducts_initialize( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas, int incrementSize );
0653 int MCGIDI_sampledProducts_release( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas );
0654 int MCGIDI_sampledProducts_remalloc( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas );
0655 int MCGIDI_sampledProducts_addProduct( statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas, 
0656     MCGIDI_sampledProductsData *sampledProductsData );
0657 int MCGIDI_sampledProducts_number( MCGIDI_sampledProductsDatas *sampledProductsDatas );
0658 MCGIDI_sampledProductsData *MCGIDI_sampledProducts_getProductAtIndex( MCGIDI_sampledProductsDatas *sampledProductsDatas, int index );
0659 
0660 /*
0661 * Routines in MCGIDI_distribution.c
0662 */
0663 MCGIDI_distribution *MCGIDI_distribution_new( statusMessageReporting *smr );
0664 int MCGIDI_distribution_initialize( statusMessageReporting *smr, MCGIDI_distribution *distribution );
0665 MCGIDI_distribution *MCGIDI_distribution_free( statusMessageReporting *smr, MCGIDI_distribution *distribution );
0666 int MCGIDI_distribution_release( statusMessageReporting *smr, MCGIDI_distribution *distribution );
0667 int MCGIDI_distribution_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_product *product, MCGIDI_POPs *pops, ptwXYPoints *norms );
0668 
0669 /*
0670 * Routines in MCGIDI_angular.c
0671 */
0672 MCGIDI_angular *MCGIDI_angular_new( statusMessageReporting *smr );
0673 int MCGIDI_angular_initialize( statusMessageReporting *smr, MCGIDI_angular *angular );
0674 MCGIDI_angular *MCGIDI_angular_free( statusMessageReporting *smr, MCGIDI_angular *angular );
0675 int MCGIDI_angular_release( statusMessageReporting *smr, MCGIDI_angular *angular );
0676 int MCGIDI_angular_setTwoBodyMasses( statusMessageReporting *smr, MCGIDI_angular *angular, double projectileMass_MeV, double targetMass_MeV,
0677     double productMass_MeV, double residualMass_MeV );
0678 int MCGIDI_angular_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms );
0679 int MCGIDI_angular_sampleMu( statusMessageReporting *smr, MCGIDI_angular *angular, MCGIDI_quantitiesLookupModes &modes,
0680     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0681 
0682 /*
0683 * Routines in MCGIDI_energy.c
0684 */
0685 MCGIDI_energy *MCGIDI_energy_new( statusMessageReporting *smr );
0686 int MCGIDI_energy_initialize( statusMessageReporting *smr, MCGIDI_energy *energy );
0687 MCGIDI_energy *MCGIDI_energy_free( statusMessageReporting *smr, MCGIDI_energy *energy );
0688 int MCGIDI_energy_release( statusMessageReporting *smr, MCGIDI_energy *energy );
0689 int MCGIDI_energy_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms,
0690     enum MCGIDI_energyType energyType, double gammaEnergy_MeV );
0691 int MCGIDI_energy_sampleEnergy( statusMessageReporting *smr, MCGIDI_energy *energy, MCGIDI_quantitiesLookupModes &modes, 
0692     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0693 
0694 /*
0695 * Routines in MCGIDI_energyAngular.c
0696 */
0697 int MCGIDI_energyAngular_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution );
0698 MCGIDI_energyAngular *MCGIDI_energyAngular_new( statusMessageReporting *smr );
0699 int MCGIDI_energyAngular_initialize( statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular );
0700 MCGIDI_energyAngular *MCGIDI_energyAngular_free( statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular );
0701 int MCGIDI_energyAngular_release( statusMessageReporting *smr, MCGIDI_energyAngular *energyAngular );
0702 int MCGIDI_energyAngular_sampleDistribution( statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes,
0703     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0704 
0705 /*
0706 * Routines in MCGIDI_angularEnergy.c
0707 */
0708 MCGIDI_angularEnergy *MCGIDI_angularEnergy_new( statusMessageReporting *smr );
0709 int MCGIDI_angularEnergy_initialize( statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular );
0710 MCGIDI_angularEnergy *MCGIDI_angularEnergy_free( statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular );
0711 int MCGIDI_angularEnergy_release( statusMessageReporting *smr, MCGIDI_angularEnergy *energyAngular );
0712 int MCGIDI_angularEnergy_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution );
0713 int MCGIDI_angularEnergy_sampleDistribution( statusMessageReporting *smr, MCGIDI_angularEnergy *angularEnergy, MCGIDI_quantitiesLookupModes &modes,
0714     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0715 
0716 /*
0717 * Routines in MCGIDI_KalbachMann.c
0718 */
0719 MCGIDI_KalbachMann *MCGIDI_KalbachMann_new( statusMessageReporting *smr, ptwXY_interpolation interpolationWY, ptwXY_interpolation interpolationXY );
0720 int MCGIDI_KalbachMann_initialize( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann, ptwXY_interpolation interpolationWY, ptwXY_interpolation interpolationXY );
0721 MCGIDI_KalbachMann *MCGIDI_KalbachMann_free( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann );
0722 int MCGIDI_KalbachMann_release( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann );
0723 int MCGIDI_KalbachMann_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution );
0724 int MCGIDI_KalbachMann_sampleEp( statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann, MCGIDI_quantitiesLookupModes &modes, 
0725     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0726 
0727 /*
0728 * Routines in MCGIDI_uncorrelated.c
0729 */
0730 int MCGIDI_uncorrelated_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution, ptwXYPoints *norms,
0731     enum MCGIDI_energyType energyType, double gammaEnergy_MeV );
0732 int MCGIDI_uncorrelated_sampleDistribution( statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes,
0733     MCGIDI_decaySamplingInfo *decaySamplingInfo );
0734 
0735 /*
0736 * Routines in MCGIDI_LLNLAngular_angularEnergy.c
0737 */
0738 int MCGIDI_LLNLAngular_angularEnergy_parseFromTOM( statusMessageReporting *smr, xDataTOM_element *element, MCGIDI_distribution *distribution );
0739 
0740 /*
0741 * Routines in MCGIDI_kinetics.c
0742 */
0743 int MCGIDI_kinetics_2BodyReaction( statusMessageReporting *smr, MCGIDI_angular *angular, double K, double mu, double phi,
0744         MCGIDI_sampledProductsData *outgoingData );
0745 int MCGIDI_kinetics_COMKineticEnergy2LabEnergyAndMomentum( statusMessageReporting *smr, double beta, double e_kinetic_com, double mu, double phi,
0746         double m3cc, double m4cc, MCGIDI_sampledProductsData *outgoingData );
0747 int MCGIDI_kinetics_COM2Lab( statusMessageReporting *smr, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, double masses[3] );
0748 
0749 /*
0750 * Routines in MCGIDI_sampling.c
0751 */
0752 int MCGIDI_sampling_pdfsOfXGivenW_initialize( statusMessageReporting *smr, MCGIDI_pdfsOfXGivenW *dists );
0753 int MCGIDI_sampling_pdfsOfXGivenW_release( statusMessageReporting *smr, MCGIDI_pdfsOfXGivenW *dists );
0754 int MCGIDI_sampling_pdfsOfX_release( statusMessageReporting *smr, MCGIDI_pdfOfX *dist );
0755 int MCGIDI_sampling_sampleX_from_pdfsOfXGivenW( MCGIDI_pdfsOfXGivenW *dists, MCGIDI_pdfsOfXGivenW_sampled *sampled, double r );
0756 int MCGIDI_sampling_sampleX_from_pdfOfX( MCGIDI_pdfOfX *dist, MCGIDI_pdfsOfXGivenW_sampled *sampled, double r );
0757 int MCGIDI_sampling_doubleDistribution( statusMessageReporting *smr, MCGIDI_pdfsOfXGivenW *pdfOfWGivenV, MCGIDI_pdfsOfXGivenW *pdfOfXGivenVAndW,  
0758         MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo );
0759 int MCGIDI_sampling_interpolationValues( statusMessageReporting *smr, ptwXY_interpolation interpolation, double *ws, double y1, double y2, double *y );
0760 double MCGIDI_sampling_ptwXY_getValueAtX( ptwXYPoints *ptwXY, double x1 );
0761 
0762 /*
0763 * Routines in MCGIDI_misc.c
0764 */
0765 int MCGIDI_misc_NumberOfZSymbols( void );
0766 const char *MCGIDI_misc_ZToSymbol( int iZ );
0767 int MCGIDI_misc_symbolToZ( const char *Z );
0768 int MCGIDI_miscNameToZAm( statusMessageReporting *smr, const char *name, int *Z, int *A, int *m, int *level );
0769 xDataTOM_Int MCGIDI_misc_binarySearch( xDataTOM_Int n, double *ds, double d );
0770 int MCGIDI_misc_PQUStringToDouble( statusMessageReporting *smr, char const *str, char const *unit, double conversion, double *value );
0771 int MCGIDI_misc_PQUStringToDoubleInUnitOf( statusMessageReporting *smr, char const *str, char const *toUnit, double *value );
0772 void MCGIDI_misc_updateTransportabilitiesMap( transportabilitiesMap *transportabilities, int PoPID, enum MCGIDI_transportability transportability );
0773 void MCGIDI_misc_updateTransportabilitiesMap2( transportabilitiesMap *transportabilities, int PoPID, int transportable );
0774 
0775 #if defined __cplusplus
0776     }
0777     }
0778 #endif
0779 
0780 #endif          /* End of MCGIDI_h_included. */