Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
xDataTOM_axes.cc
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# <<END-copyright>>
4*/
5
6#include <string.h>
7
8#include "xDataTOM_private.h"
9
10#if defined __cplusplus
11namespace GIDI {
12using namespace GIDI;
13#endif
14
15static char const *xDataTOM_frame_labString = "lab";
16static char const *xDataTOM_frame_centerOfMassString = "centerOfMass";
17static char const *xDataTOM_frame_invalidString = "invalid";
18/*
19************************************************************
20*/
22
23 axes->numberOfAxes = 0;
24 if( ( axes->axis = (xDataTOM_axis *) smr_malloc2( smr, numberOfAxes * sizeof( xDataTOM_axis ), 1, "axes->axis" ) ) == NULL ) return( 1 );
25 axes->numberOfAxes = numberOfAxes;
26 return( 0 );
27}
28/*
29************************************************************
30*/
32
33 int i;
34
35 for( i = 0; i < axes->numberOfAxes; i++ ) {
36 xDataTOM_axis_release( NULL, &(axes->axis[i]) );
37 }
38 smr_freeMemory( (void **) &(axes->axis) );
39 return( 0 );
40}
41/*
42************************************************************
43*/
44char const *xDataTOM_axes_getLabel( statusMessageReporting *smr, xDataTOM_axes *axes, int index ) {
45
46 if( ( index < 0 ) || ( index >= axes->numberOfAxes ) ) {
47 smr_setReportError2( smr, xDataTOM_smrLibraryID, -1, "invalid axes index = %d", index );
48 return( NULL );
49 }
50 return( axes->axis[index].label );
51}
52/*
53************************************************************
54*/
55char const *xDataTOM_axes_getUnit( statusMessageReporting *smr, xDataTOM_axes *axes, int index ) {
56
57 if( ( index < 0 ) || ( index >= axes->numberOfAxes ) ) {
58 smr_setReportError2( smr, xDataTOM_smrLibraryID, -1, "invalid axes index = %d", index );
59 return( NULL );
60 }
61 return( axes->axis[index].unit );
62}
63/*
64************************************************************
65*/
67 enum xDataTOM_interpolationFlag *dependent, enum xDataTOM_interpolationQualifier *qualifier ) {
68
69 xDataTOM_interpolation *interpolation;
70
71 if( ( index < 0 ) || ( index >= axes->numberOfAxes ) ) {
72 smr_setReportError2( smr, xDataTOM_smrLibraryID, -1, "invalid axes index = %d", index );
73 return( 1 );
74 }
75 interpolation = &(axes->axis[index].interpolation);
76 *independent = interpolation->independent;
77 *dependent = interpolation->dependent;
78 *qualifier = interpolation->qualifier;
79
80 return( 0 );
81}
82
83/*
84c subAxes functions.
85*/
86/*
87************************************************************
88*/
90 xDataTOM_axes *axes, xDataTOM_interpolation *interpolation ) {
91
92 subAxes->type = type;
93 if( axes == NULL ) {
94 smr_setReportError2p( smr, xDataTOM_smrLibraryID, -1, "Axes must not be NULL" );
95 return( 1 );
96 }
97 subAxes->offset = offset;
98 if( ( offset < 0 ) || ( offset >= axes->numberOfAxes ) ) {
99 smr_setReportError2( smr, xDataTOM_smrLibraryID, -1, "offset = %d < 0 or >= axes->numberOfAxes = %d", offset, axes->numberOfAxes );
100 return( 1 );
101 }
103 if( interpolation == NULL ) {
104 smr_setReportError2p( smr, xDataTOM_smrLibraryID, -1, "Interpolation must not be NULL for intepolationAxes" );
105 return( 1 );
106 }
107 if( xDataTOM_interpolation_copy( smr, &(subAxes->interpolation), interpolation ) ) return( 1 ); }
108 else { /* Not used but fill in anyway. */
111 }
112 subAxes->axes = axes;
113 return( 0 );
114}
115/*
116************************************************************
117*/
119
120 subAxes->axes = NULL;
121 return( 0 );
122}
123/*
124************************************************************
125*/
126char const *xDataTOM_subAxes_getLabel( statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index ) {
127
128 return( xDataTOM_axes_getLabel( smr, subAxes->axes, index + subAxes->offset ) );
129}
130/*
131************************************************************
132*/
133char const *xDataTOM_subAxes_getUnit( statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index ) {
134
135 return( xDataTOM_axes_getUnit( smr, subAxes->axes, index + subAxes->offset ) );
136}
137
138/*
139c Axis functions.
140*/
141/*
142************************************************************
143*/
144xDataTOM_axis *xDataTOM_axis_new( statusMessageReporting *smr, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation ) {
145
146 xDataTOM_axis *axis = NULL;
147
148 if( ( axis = (xDataTOM_axis *) smr_malloc2( smr, sizeof( xDataTOM_axis ), 0, "axis" ) ) == NULL ) return( NULL );
149 if( xDataTOM_axis_initialize( smr, axis, index, label, unit, interpolation ) != 0 ) smr_freeMemory( (void **) &axis );
150 return( axis );
151}
152/*
153************************************************************
154*/
155int xDataTOM_axis_initialize( statusMessageReporting *smr, xDataTOM_axis *axis, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation ) {
156
157 axis->index = index;
158 if( ( axis->label = smr_allocateCopyString2( smr, label, "label" ) ) == NULL ) goto err;
159 if( ( axis->unit = smr_allocateCopyString2( smr, unit, "unit" ) ) == NULL ) goto err;
160 if( xDataTOM_interpolation_copy( smr, &(axis->interpolation), interpolation ) != 0 ) goto err;
161
162 return( 0 );
163
164err:
165 smr_freeMemory( (void **) &(axis->label) );
166 smr_freeMemory( (void **) &(axis->unit) );
167 return( 1 );
168}
169/*
170************************************************************
171*/
173
174 axis->index = -1;
175 smr_freeMemory( (void **) &(axis->label) );
176 smr_freeMemory( (void **) &(axis->unit) );
177 return( NULL );
178}
179/*
180************************************************************
181*/
183
184 if( strcmp( "lab", frame ) == 0 ) return( xDataTOM_frame_lab );
185 if( strcmp( "centerOfMass", frame ) == 0 ) return( xDataTOM_frame_centerOfMass );
186 return( xDataTOM_frame_invalid );
187}
188/*
189************************************************************
190*/
192
193 switch( frame ) {
194 case xDataTOM_frame_lab : return( xDataTOM_frame_labString );
195 case xDataTOM_frame_centerOfMass : return( xDataTOM_frame_centerOfMassString );
196 default :
197 break;
198 }
199 return( xDataTOM_frame_invalidString );
200}
201
202#if defined __cplusplus
203}
204#endif
#define smr_setReportError2(smr, libraryID, code, fmt,...)
#define smr_setReportError2p(smr, libraryID, code, fmt)
#define smr_allocateCopyString2(smr, s, forItem)
void * smr_freeMemory(void **p)
#define smr_malloc2(smr, size, zero, forItem)
xDataTOM_axis * axis
Definition xDataTOM.h:70
xDataTOM_interpolation interpolation
Definition xDataTOM.h:65
enum xDataTOM_interpolationFlag independent dependent
Definition xDataTOM.h:57
enum xDataTOM_interpolationQualifier qualifier
Definition xDataTOM.h:58
enum xDataTOM_subAxesType type
Definition xDataTOM.h:74
xDataTOM_axes * axes
Definition xDataTOM.h:76
xDataTOM_interpolation interpolation
Definition xDataTOM.h:77
char const * xDataTOM_axis_frameToString(statusMessageReporting *smr, enum xDataTOM_frame frame)
int xDataTOM_subAxes_release(xDataTOM_subAxes *subAxes)
xDataTOM_subAxesType
Definition xDataTOM.h:24
@ xDataTOM_subAxesType_intepolationAxes
Definition xDataTOM.h:24
char const * xDataTOM_axes_getUnit(statusMessageReporting *smr, xDataTOM_axes *axes, int index)
xDataTOM_axis * xDataTOM_axis_release(statusMessageReporting *smr, xDataTOM_axis *axis)
enum xDataTOM_frame xDataTOM_axis_stringToFrame(statusMessageReporting *smr, char const *frame)
xDataTOM_axis * xDataTOM_axis_new(statusMessageReporting *smr, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation)
int xDataTOM_axis_initialize(statusMessageReporting *smr, xDataTOM_axis *axis, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation)
char const * xDataTOM_subAxes_getLabel(statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index)
xDataTOM_interpolationFlag
Definition xDataTOM.h:19
@ xDataTOM_interpolationFlag_linear
Definition xDataTOM.h:19
int xDataTOM_axes_initialize(statusMessageReporting *smr, xDataTOM_axes *axes, int numberOfAxes)
int xDataTOM_axes_getInterpolation(statusMessageReporting *smr, xDataTOM_axes *axes, int index, enum xDataTOM_interpolationFlag *independent, enum xDataTOM_interpolationFlag *dependent, enum xDataTOM_interpolationQualifier *qualifier)
char const * xDataTOM_axes_getLabel(statusMessageReporting *smr, xDataTOM_axes *axes, int index)
int xDataTOM_interpolation_set(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, enum xDataTOM_interpolationFlag independent, enum xDataTOM_interpolationFlag dependent, enum xDataTOM_interpolationQualifier qualifier)
char const * xDataTOM_subAxes_getUnit(statusMessageReporting *smr, xDataTOM_subAxes *subAxes, int index)
xDataTOM_frame
Definition xDataTOM.h:23
@ xDataTOM_frame_centerOfMass
Definition xDataTOM.h:23
@ xDataTOM_frame_invalid
Definition xDataTOM.h:23
@ xDataTOM_frame_lab
Definition xDataTOM.h:23
int xDataTOM_interpolation_copy(statusMessageReporting *smr, xDataTOM_interpolation *desc, xDataTOM_interpolation *src)
int xDataTOM_subAxes_initialize(statusMessageReporting *smr, xDataTOM_subAxes *subAxes, enum xDataTOM_subAxesType type, int offset, xDataTOM_axes *axes, xDataTOM_interpolation *interpolation)
xDataTOM_interpolationQualifier
Definition xDataTOM.h:21
@ xDataTOM_interpolationQualifier_none
Definition xDataTOM.h:22
int xDataTOM_axes_release(xDataTOM_axes *axes)
int xDataTOM_smrLibraryID
Definition xDataTOM.cc:34