38 #include <tpia_target.h>
39 #include <tpia_misc.h>
41 #if defined __cplusplus
52 tpia_channel *channel;
55 if( ( channel = (tpia_channel*) xData_malloc2( smr,
sizeof( tpia_channel ), 0,
"channel" ) ) == NULL )
return( NULL );
65 memset( channel, 0,
sizeof( tpia_channel ) );
72 int pointwiseRequired ) {
74 tpia_channel *channel;
94 tpia_product *product, *nextProduct;
98 channel->crossSectionPointwise.data = (
double*)
xData_free( smr, channel->crossSectionPointwise.data );
100 channel->crossSectionGrouped.data = (
double*)
xData_free( smr, channel->crossSectionGrouped.data );
102 channel->availableEnergyGrouped.data = (
double*)
xData_free( smr, channel->availableEnergyGrouped.data );
103 for( product = channel->decayChannel.products; product != NULL; product = nextProduct ) {
104 nextProduct = product->next;
107 channel->decayChannel.numberOfProducts = 0;
108 channel->decayChannel.products = NULL;
115 int pointwiseRequired ) {
119 xData_element *element, *pElement, *gElement, *eElement;
122 channel->target = target;
124 channel->outputChannel = tpia_misc_pointerToAttributeIfAllOk2(smr, channelElement, 1, &(channel->attributes),
"outputChannel" );
125 channel->genre = tpia_misc_pointerToAttributeIfAllOk2( smr, channelElement, 1, &(channel->attributes),
"genre" );
126 channel->QString = tpia_misc_pointerToAttributeIfAllOk2( smr, channelElement, 1, &(channel->attributes),
"Q" );
127 channel->fission = tpia_misc_pointerToAttributeIfAllOk2( smr, channelElement, 0, &(channel->attributes),
"fission" );
137 channel->QIsFloat = 1;
138 channel->Q = strtod( channel->QString, &p );
140 channel->QIsFloat = 0;
150 &(channel->crossSectionPointwise.start), &(channel->crossSectionPointwise.end), target->energyGrid );
155 if( ( channel->crossSectionGrouped.data != NULL ) && ( ( channel->crossSectionPointwise.data != NULL ) || !pointwiseRequired ) ) {
156 if( target->contents == NULL ) {
198 if( index < 0 )
return( NULL );
208 return( channel->decayChannel.numberOfProducts );
216 return( strcmp( channel->genre,
"production" ) == 0 );
223 int crossSectionType ) {
227 if( crossSectionType == tpia_crossSectionType_grouped ) {
229 else if( crossSectionType == tpia_crossSectionType_pointwise ) {
xData_Int xData_convertAttributeTo_xData_Int(statusMessageReporting *smr, xData_element *element, const char *name, xData_Int *n)
xData_element * xData_getOneElementByTagName(statusMessageReporting *smr, xData_element *element, char *name, int required)
tpia_product * tpia_product_free(statusMessageReporting *smr, tpia_product *product)
int xData_addToAccessed(statusMessageReporting *, xData_element *element, int increment)
int tpia_misc_get2d_xShared_yHistogram_data_Grouped(statusMessageReporting *smr, xData_element *element, tpia_1dData *group)
int tpia_product_getDecayChannelFromElement(statusMessageReporting *smr, xData_element *parentElement, tpia_channel *channel, tpia_product *parentProduct, tpia_product **priorProductNext)
tpia_product * tpia_decayChannel_getNextProduct(tpia_product *product)
xData_Int tpia_target_heated_getEIndex(tpia_target_heated *target, double e_in)
int tpia_channel_numberOfProducts(statusMessageReporting *, tpia_channel *channel)
int tpia_channel_getFromElement(statusMessageReporting *smr, tpia_target_heated *target, xData_element *channelElement, tpia_channel *channel, int pointwiseRequired)
tpia_product * tpia_channel_getProductByIndex(statusMessageReporting *, tpia_channel *channel, int index)
int tpia_channel_initialize(statusMessageReporting *, tpia_channel *channel)
int smr_isOk(statusMessageReporting *smr)
tpia_channel * tpia_channel_createGetFromElement(statusMessageReporting *smr, tpia_target_heated *target, xData_element *channelElement, int pointwiseRequired)
int tpia_frame_setFromElement(statusMessageReporting *smr, xData_element *element, int dimension, tpia_data_frame *frame)
int xData_releaseAttributionList(statusMessageReporting *smr, xData_attributionList *attributes)
tpia_channel * tpia_channel_free(statusMessageReporting *smr, tpia_channel *channel)
int tpia_channel_release(statusMessageReporting *smr, tpia_channel *channel)
void * xData_free(statusMessageReporting *, void *p)
double * tpia_misc_get2dxindex_y_data(statusMessageReporting *smr, xData_element *element, xData_Int *start, xData_Int *end, double *xValues)
int xData_copyAttributionList(statusMessageReporting *smr, xData_attributionList *dest, xData_attributionList *src)
double tpia_channel_getCrossSectionAtE(statusMessageReporting *smr, tpia_channel *channel, xData_Int, double e_in, int crossSectionType)
double tpia_misc_getPointwiseCrossSectionAtE(statusMessageReporting *, tpia_1dData *crossSection, double *energyGrid, xData_Int index, double e_in)
int tpia_channel_isProduction(statusMessageReporting *, tpia_channel *channel)
tpia_channel * tpia_channel_create(statusMessageReporting *smr)
tpia_product * tpia_decayChannel_getFirstProduct(tpia_decayChannel *decayChannel)
tpia_product * tpia_channel_getFirstProduct(tpia_channel *channel)
static int _tpia_channel_getProductData(statusMessageReporting *smr, xData_element *channelElement, tpia_channel *channel)