tpia_multiplicity.cc File Reference

#include <string.h>
#include <ctype.h>
#include <tpia_target.h>
#include <tpia_misc.h>

Go to the source code of this file.

Functions

tpia_multiplicity * tpia_multiplicity_create (statusMessageReporting *smr)
int tpia_multiplicity_initialize (statusMessageReporting *smr, tpia_multiplicity *multiplicity)
tpia_multiplicity * tpia_multiplicity_free (statusMessageReporting *smr, tpia_multiplicity *multiplicity)
int tpia_multiplicity_release (statusMessageReporting *smr, tpia_multiplicity *multiplicity)
tpia_multiplicity * tpia_multiplicity_createGetFromElement (statusMessageReporting *smr, xData_element *multiplicityElement, int nGroups)
int tpia_multiplicity_getFromElement (statusMessageReporting *smr, xData_element *multiplicityElement, tpia_multiplicity *multiplicity, int)
int tpia_multiplicity_getTimeScaleFromElement (statusMessageReporting *smr, xData_element *element, const char **timeScale, int *isDelayedNeutrons, double *dTimeScale)


Function Documentation

tpia_multiplicity* tpia_multiplicity_create ( statusMessageReporting *  smr  ) 

Definition at line 50 of file tpia_multiplicity.cc.

References tpia_multiplicity_free(), and tpia_multiplicity_initialize().

Referenced by tpia_multiplicity_createGetFromElement().

00050                                                                            {
00051 
00052     tpia_multiplicity *multiplicity;
00053 
00054     //if( ( multiplicity = xData_malloc2( smr, sizeof( tpia_multiplicity ), 0, "multiplicity" ) ) == NULL ) return( NULL );
00055     if( ( multiplicity = (tpia_multiplicity*) xData_malloc2( smr, sizeof( tpia_multiplicity ), 0, "multiplicity" ) ) == NULL ) return( NULL );
00056     if( tpia_multiplicity_initialize( smr, multiplicity ) ) multiplicity = tpia_multiplicity_free( smr, multiplicity );
00057     return( multiplicity );
00058 }

tpia_multiplicity* tpia_multiplicity_createGetFromElement ( statusMessageReporting *  smr,
xData_element *  multiplicityElement,
int  nGroups 
)

Definition at line 92 of file tpia_multiplicity.cc.

References tpia_multiplicity_create(), tpia_multiplicity_free(), and tpia_multiplicity_getFromElement().

00092                                                                                                                                           {
00093 
00094     tpia_multiplicity *multiplicity;
00095 
00096     if( ( multiplicity = tpia_multiplicity_create( smr ) ) == NULL ) return( NULL );
00097     if( tpia_multiplicity_getFromElement( smr, multiplicityElement, multiplicity, nGroups ) != 0 ) multiplicity = tpia_multiplicity_free( smr, multiplicity  );
00098     return( multiplicity );
00099 }

tpia_multiplicity* tpia_multiplicity_free ( statusMessageReporting *  smr,
tpia_multiplicity *  multiplicity 
)

Definition at line 71 of file tpia_multiplicity.cc.

References tpia_multiplicity_release(), and xData_free().

Referenced by tpia_multiplicity_create(), tpia_multiplicity_createGetFromElement(), and tpia_product_release().

00071                                                                                                           {
00072 
00073     tpia_multiplicity_release( smr, multiplicity );
00074     xData_free( smr, multiplicity );
00075     return( NULL );
00076 }

int tpia_multiplicity_getFromElement ( statusMessageReporting *  smr,
xData_element *  multiplicityElement,
tpia_multiplicity *  multiplicity,
int   
)

Definition at line 104 of file tpia_multiplicity.cc.

References tpia_frame_setFromElement(), tpia_misc_get2d_xShared_yHistogram_data_Grouped(), tpia_misc_get2dx_y_data(), tpia_misc_setMessageError_Element(), tpia_multiplicity_getTimeScaleFromElement(), xData_addToAccessed(), xData_getFirstElement(), and xData_getNextElement().

Referenced by tpia_multiplicity_createGetFromElement().

00104                                                                                                                                               {
00105 
00106     const char *timeScale;
00107     int isDelayedNeutrons;
00108     xData_element *data;
00109 
00110     xData_addToAccessed( smr, multiplicityElement, 1 );
00111     if( ( tpia_frame_setFromElement( smr, multiplicityElement, 2, &(multiplicity->frame) ) ) != 0 ) return( 1 );
00112     if( tpia_multiplicity_getTimeScaleFromElement( smr, multiplicityElement, &timeScale, &isDelayedNeutrons, &(multiplicity->timeScale) ) ) return( 1 );
00113     for( data = xData_getFirstElement( multiplicityElement ); data != NULL; data = xData_getNextElement( data ) ) {
00114         if( strcmp( data->name, "grouped" ) == 0 ) {
00115             if( tpia_misc_get2d_xShared_yHistogram_data_Grouped( smr, data, &(multiplicity->grouped) ) ) return( 1 ); }
00116         else if( strcmp( data->name, "pointwise" ) == 0 ) {
00117             if( ( multiplicity->pointwise = tpia_misc_get2dx_y_data( smr, data, &multiplicity->numberOfPointwise ) ) == NULL ) return( 1 ); }
00118         else {
00119             tpia_misc_setMessageError_Element( smr, NULL, multiplicityElement, __FILE__, __LINE__, 1, "unsupported multiplicity type = %s", data->name );
00120             return( 1 );
00121         }
00122     }
00123     return( 0 );
00124 }

int tpia_multiplicity_getTimeScaleFromElement ( statusMessageReporting *  smr,
xData_element *  element,
const char **  timeScale,
int *  isDelayedNeutrons,
double *  dTimeScale 
)

Definition at line 128 of file tpia_multiplicity.cc.

References tpia_misc_setMessageError_Element(), and xData_getAttributesValue().

Referenced by tpia_multiplicity_getFromElement().

00129                              {
00130 
00131     const char *p;
00132     char *e;
00133 
00134     *isDelayedNeutrons = 0;
00135     *dTimeScale = 0.;
00136     *timeScale = xData_getAttributesValue( &(element->attributes), "timeScale" );
00137     if( *timeScale != NULL ) {
00138         if( strcmp( *timeScale, "prompt" ) ) {
00139             if( strncmp( *timeScale, "delayed", 7 ) ) {
00140                 tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "invalid timeScale attribute = %s", *timeScale );
00141                 return( 1 ); }
00142             else {
00143                 for( p = &((*timeScale)[7]); *p; p++ ) if( !isspace( *p ) ) break;
00144                 if( *p != '=' ) {
00145                     tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "timeScale attribute '%s' missing '='", *timeScale );
00146                     return( 1 );
00147                 }
00148                 p++;
00149                 *dTimeScale = strtod( p, &e );
00150                 if( *e != 0 ) {
00151                     tpia_misc_setMessageError_Element( smr, NULL, element, __FILE__, __LINE__, 1, "could not convert timeScale attribute '%s' to double",
00152                         *timeScale );
00153                     return( 1 );
00154                 }
00155                 *isDelayedNeutrons = 1;
00156             }
00157         }
00158     }
00159     return( 0 );
00160 }

int tpia_multiplicity_initialize ( statusMessageReporting *  smr,
tpia_multiplicity *  multiplicity 
)

Definition at line 62 of file tpia_multiplicity.cc.

References tpia_frame_setFromString().

Referenced by tpia_multiplicity_create(), and tpia_multiplicity_release().

00062                                                                                                  {
00063 
00064     memset( multiplicity, 0, sizeof( tpia_multiplicity ) );
00065     if( tpia_frame_setFromString( smr, "", "", 0, &(multiplicity->frame) ) ) return( 1 );
00066     return( 0 );
00067 }

int tpia_multiplicity_release ( statusMessageReporting *  smr,
tpia_multiplicity *  multiplicity 
)

Definition at line 80 of file tpia_multiplicity.cc.

References tpia_multiplicity_initialize(), and xData_free().

Referenced by tpia_multiplicity_free().

00080                                                                                               {
00081 
00082     //multiplicity->grouped.data = xData_free( smr, multiplicity->grouped.data );
00083     multiplicity->grouped.data = (double*) xData_free( smr, multiplicity->grouped.data );
00084     //multiplicity->pointwise = xData_free( smr, multiplicity->pointwise );
00085     multiplicity->pointwise = (double*) xData_free( smr, multiplicity->pointwise );
00086     tpia_multiplicity_initialize( smr, multiplicity );
00087     return( 0 );
00088 }


Generated on Mon May 27 17:51:16 2013 for Geant4 by  doxygen 1.4.7