43 #if defined __cplusplus
48 static const int tpia_b_unknown = 0,
50 tpia_b_twoBody_formFactor = 0,
54 tpia_b_NBody_pairProduction = 0;
125 multiplicity_next = multiplicity->
next;
131 for( decayProduct = product->
decayChannel.
products; decayProduct != NULL; decayProduct = nextProduct ) {
132 nextProduct = decayProduct->
next;
145 char const *productGenre;
146 char *
name, *multiplicity, *
e;
156 if( multiplicity != NULL ) {
157 if( strcmp( multiplicity,
"energyDependent" ) && strcmp( multiplicity,
"partialProduction" ) ) {
159 while( isspace( *e ) ) e++;
189 if(
smr_isOk( smr ) ) _tpia_product_getProductOutgoingData( smr, productElement, product );
202 if( strcmp( data->
name,
"depositionEnergy" ) == 0 ) {
204 if( _tpia_product_checkRequiredData( smr, allowMany,
tpia_m_depositionEnergy, productElement, product, (
char*)
"deposition energy" ) )
return( 1 );
205 if( _tpia_product_getDepositionEnergy( smr, data, product ) != 0 )
return( 1 ); }
206 else if( strcmp( data->
name,
"multiplicity" ) == 0 ) {
209 if( _tpia_product_checkRequiredData( smr, allowMany,
tpia_m_multiplicity, productElement, product, (
char*)
"multiplicity" ) )
return( 1 );
210 if( _tpia_product_getMultiplicityFromElement( smr, data, product ) != 0 )
return( 1 ); }
211 else if( strcmp( data->
name,
"angular" ) == 0 ) {
213 if( _tpia_product_checkRequiredData( smr, allowMany,
tpia_m_angular, productElement, product, (
char*)
"angular" ) )
return( 1 );
215 else if( strcmp( data->
name,
"Legendre" ) == 0 ) {
217 if( _tpia_product_checkRequiredData( smr, allowMany,
tpia_m_Legendre, productElement, product, (
char*)
"Legendre" ) )
return( 1 );
219 else if( strcmp( data->
name,
"angularEnergy" ) == 0 ) {
220 if( _tpia_product_checkRequiredData( smr, allowMany,
tpia_m_angular_energy, productElement, product, (
char*)
"angularEnergy" ) )
return( 1 );
222 else if( strcmp( data->
name,
"decayChannel" ) == 0 ) {
232 char const *str =
"";
276 for( i = 0; i < list->
n; i++ ) {
281 if( parentProduct == NULL ) {
290 *priorProductNext = product;
291 priorProductNext = &(product->
next);
305 if( strcmp( data->
name,
"grouped" ) == 0 ) {
320 const char *timeScale;
321 int isDelayedNeutrons;
330 if( isDelayedNeutrons == 0 ) {
341 current = current->
next ) {
343 multiplicity->
next = current;
344 prior->
next = multiplicity;
349 if( current == NULL ) prior->
next = multiplicity;
379 if( index < 0 )
return( NULL );
415 double *
p = multiplicityVsEnergy->
pointwise, dMult;
422 for( i = 0; i < multiplicityVsEnergy->
numberOfPointwise - 1; i++, p += 2 )
if( e_in < p[2] )
break;
423 dMult = ( e_in - p[0] ) / ( p[2] - p[0] );
424 dMult = dMult * p[3] + ( 1. - dMult ) * p[1];
426 multiplicity = (
int) dMult;
427 if( r < ( dMult - multiplicity ) ) multiplicity++;
429 return( multiplicity );
432 #if defined __cplusplus