13 #include <boost/python.hpp>
21 #include "msdevstudio/MSconfig.h"
35 using std::runtime_error;
39 using namespace hippodraw;
72 const vector < double > &
76 static vector < double > temp;
83 catch (
const runtime_error & e ) {
90 const vector < double > &
93 const std::vector < int > & indexes )
const
95 static vector < double > temp;
98 const vector < double > &
column
103 catch (
const runtime_error & e ) {
110 const vector < double > &
114 static vector < double > temp;
121 catch (
const runtime_error & e ) {
129 const vector < double > &
133 static vector < double > temp;
140 catch (
const runtime_error & e ) {
151 const std::vector < double > &
column )
156 const std::vector < std::string > &
174 catch (
const runtime_error & e ) {
184 unsigned int rank = shape.size ();
185 for (
unsigned int i = 0; i < rank -1; i++ ) {
186 shape[i] = shape[i+1];
191 const std::vector < int >
198 string what (
"RootNTuple: No column with named `" );
201 throw std::runtime_error ( what );
203 vector < int >
shape;
211 catch (
const runtime_error & e ) {
229 const std::vector < int > & indices )
const
234 using namespace boost::python;
238 valueAt (
unsigned int row,
const std::string & variable )
243 vector < int >
shape;
244 fillShape ( shape, column );
245 sliceRowDimension ( shape );
275 throw std::runtime_error (
"HippoDraw was not built with "
276 "numeric Python support" );
285 throwIfInvalidLabel ( name );
286 unsigned int length = rows ();
287 unsigned int column = indexOf ( name );
289 if ( isMultiDimensional ( name ) ==
false ) {
290 vector < int >
shape;
291 shape.push_back ( length );
292 const vector < double > & col_vec = getColumn ( column );
293 double * array = const_cast <
double * > ( &col_vec[0] );
300 vector < int >
shape;
301 fillShape ( shape, column );
302 unsigned int rank = shape.size();
303 for (
unsigned int i = 1; i <
rank; i++ ) {
306 int total_size = size * shape [ 0 ];
313 vector < double > array_vec;
314 array_vec.reserve ( total_size );
315 for (
unsigned int row = 0; row < length; row++ ) {
317 array_vec.insert ( array_vec.end(), array, array +
size );
327 vector < float > array_vec;
328 array_vec.reserve ( total_size );
329 for (
unsigned int row = 0; row < length; row++ ) {
331 array_vec.insert ( array_vec.end(), array, array +
size );
341 vector < int > array_vec;
342 array_vec.reserve ( total_size );
343 for (
unsigned int row = 0; row < length; row++ ) {
345 array_vec.insert ( array_vec.end(), array, array +
size );
355 vector < unsigned int > array_vec;
356 array_vec.reserve ( total_size );
357 for (
unsigned int row = 0; row < length; row++ ) {
359 array_vec.insert ( array_vec.end(), array, array +
size );
371 vector < double > array_vec;
376 throw std::runtime_error (
"HippoDraw was not built with "
377 "numeric Python support" );