202     int i1, multiplicity, secondTwoBody = 0, isDecayChannel = ( outputChannel->
reaction == NULL );
 
  205     double phi, 
p, masses[3];
 
  209     if( isDecayChannel ) {
 
  210         masses[0] = masses_[0];              
 
  211         masses[1] = masses_[1]; }
 
  218         product = &(outputChannel->
products[i1]);
 
  224             if( !secondTwoBody ) {
 
  226                     decaySamplingInfo->
rng( decaySamplingInfo->
rngState ) );
 
  227                 while( multiplicity > 0 ) { 
 
  230                     decaySamplingInfo->
pop = product->
pop;
 
  231                     decaySamplingInfo->
mu = 0;
 
  232                     decaySamplingInfo->
Ep = 0;
 
  234                     productData[0].
pop = product->
pop;
 
  242                     switch( outputChannel->
genre ) {
 
  247                             phi = 2. * 
M_PI * decaySamplingInfo->
rng( decaySamplingInfo->
rngState );
 
  249                             if( !
smr_isOk( smr ) ) 
return( -1 );
 
  250                             productData[1].
pop = product[1].
pop;
 
  255                             if( !
smr_isOk( smr ) ) 
return( -1 );
 
  257                             if( !
smr_isOk( smr ) ) 
return( -1 );
 
  263                         switch( distribution->
type ) {
 
  277                             printf( 
"Unknown spectral data form product name = %s, channel genre = %d\n", product->
pop->
name, outputChannel->
genre );
 
  282                         printf( 
"Channel is undefined\n" );
 
  285                         printf( 
"Channel is twoBodyDecay\n" );
 
  288                         printf( 
"Channel is uncorrelatedDecay\n" );
 
  291                         printf( 
"Unsupported channel genre = %d\n", outputChannel->
genre );
 
  294                     if( !
smr_isOk( smr ) ) 
return( -1 );
 
  295                     if( !secondTwoBody ) {
 
  300                         p = std::sqrt( decaySamplingInfo->
Ep * ( decaySamplingInfo->
Ep + 2. * product->
pop->
mass_MeV ) );
 
  302                         productData[0].
pz_vz = p * decaySamplingInfo->
mu;
 
  303                         p = std::sqrt( 1. - decaySamplingInfo->
mu * decaySamplingInfo->
mu ) * 
p;
 
  304                         phi = 2. * 
M_PI * decaySamplingInfo->
rng( decaySamplingInfo->
rngState );
 
  305                         productData[0].
px_vx = p * std::sin( phi );
 
  306                         productData[0].
py_vy = p * std::cos( phi );
 
  308                         if( !
smr_isOk( smr ) ) 
return( -1 );
 
#define MCGIDI_speedOfLight_cm_sec
 
int MCGIDI_product_sampleMultiplicity(statusMessageReporting *smr, MCGIDI_product *product, double e_in, double r)
 
int MCGIDI_angularEnergy_sampleDistribution(statusMessageReporting *smr, MCGIDI_angularEnergy *angularEnergy, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo)
 
int MCGIDI_sampledProducts_addProduct(statusMessageReporting *smr, MCGIDI_sampledProductsDatas *sampledProductsDatas, MCGIDI_sampledProductsData *sampledProductsData)
 
double MCGIDI_product_getMass_MeV(statusMessageReporting *smr, MCGIDI_product *product)
 
double delayedNeutronRate
 
int MCGIDI_energyAngular_sampleDistribution(statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo)
 
int MCGIDI_uncorrelated_sampleDistribution(statusMessageReporting *smr, MCGIDI_distribution *distribution, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo)
 
int MCGIDI_angular_sampleMu(statusMessageReporting *smr, MCGIDI_angular *angular, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo)
 
double MCGIDI_reaction_getProjectileMass_MeV(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
int smr_isOk(statusMessageReporting *smr)
 
double delayedNeutronRate
 
G4double G4Log(G4double x)
 
enum MCGIDI_distributionType type
 
enum MCGIDI_channelGenre genre
 
MCGIDI_KalbachMann * KalbachMann
 
int MCGIDI_kinetics_COM2Lab(statusMessageReporting *smr, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, double masses[3])
 
enum xDataTOM_frame frame
 
int MCGIDI_kinetics_2BodyReaction(statusMessageReporting *smr, MCGIDI_angular *angular, double K, double mu, double phi, MCGIDI_sampledProductsData *outgoingData)
 
MCGIDI_outputChannel decayChannel
 
MCGIDI_distribution distribution
 
double MCGIDI_reaction_getTargetMass_MeV(statusMessageReporting *smr, MCGIDI_reaction *reaction)
 
int MCGIDI_outputChannel_sampleProductsAtE(statusMessageReporting *smr, MCGIDI_outputChannel *outputChannel, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo, MCGIDI_sampledProductsDatas *productDatas, double *masses)
 
MCGIDI_product * products
 
double getProjectileEnergy(void) const 
 
MCGIDI_angularEnergy * angularEnergy
 
MCGIDI_reaction * reaction
 
int MCGIDI_KalbachMann_sampleEp(statusMessageReporting *smr, MCGIDI_KalbachMann *KalbachMann, MCGIDI_quantitiesLookupModes &modes, MCGIDI_decaySamplingInfo *decaySamplingInfo)