~vpec/maus/tof_calib_read

« back to all changes in this revision

Viewing changes to src/py_cpp/PyField.cc

  • Committer: Adam Dobbs
  • Date: 2015-06-26 14:33:50 UTC
  • mfrom: (659.1.113 release-candidate)
  • Revision ID: phuccj@gmail.com-20150626143350-m56pbthi31ahqvxj
Tags: MAUS-v0.9.6
MAUS-v0.9.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 */
17
17
 
18
18
#include <string>
 
19
#include <sstream>
19
20
 
20
21
#include "src/legacy/BeamTools/BTFieldConstructor.hh"
21
22
 
60
61
  return py_field;
61
62
}
62
63
 
 
64
std::string Str_DocString =
 
65
  std::string("str(is_mc)\n\n")+
 
66
  std::string("Get a string describing the fields in MAUS.\n\n")+
 
67
  std::string("- is_mc: set to True to print the MC fields; set to False to\n")+
 
68
  std::string("         to print the Recon fields\n")+
 
69
  std::string("Returns a multiline string, each line describing the\n")+
 
70
  std::string("position, rotation, scale factor and field.\n");
 
71
 
 
72
PyObject* Str(PyObject *dummy, PyObject *args) {
 
73
  PyObject* py_is_mc;
 
74
  if (!PyArg_ParseTuple(args, "O", &py_is_mc)) {
 
75
        PyErr_SetString(PyExc_TypeError,
 
76
               "Failed to interpret str arguments as bool");
 
77
        return NULL;
 
78
  }
 
79
  int is_mc = PyObject_IsTrue(py_is_mc);
 
80
 
 
81
  try {
 
82
    BTFieldConstructor* maus_field = NULL;
 
83
    if (is_mc)
 
84
        maus_field = Globals::GetInstance()->GetMCFieldConstructor();
 
85
    else
 
86
        maus_field = Globals::GetInstance()->GetReconFieldConstructor();
 
87
    if (maus_field == NULL) {
 
88
      PyErr_SetString(PyExc_RuntimeError,
 
89
            "Error - somehow MAUS library was initialised but fields are not.");
 
90
      return NULL;
 
91
    }
 
92
    std::stringstream str_out;
 
93
    maus_field->Print(str_out);
 
94
    PyObject* py_str = PyString_FromString(str_out.str().c_str());
 
95
    return py_str;
 
96
  } catch (std::exception& exc) {
 
97
    PyErr_SetString(PyExc_RuntimeError, (&exc)->what());
 
98
    return NULL;
 
99
  }
 
100
}
 
101
 
63
102
static PyMethodDef methods[] = {
 
103
{"str", (PyCFunction)Str, METH_VARARGS, Str_DocString.c_str()},
64
104
{"get_field_value", (PyCFunction)GetFieldValue,
65
 
                         METH_VARARGS, GetFieldValue_DocString.c_str()},
 
105
                          METH_VARARGS, GetFieldValue_DocString.c_str()},
66
106
{NULL, NULL, 0, NULL}
67
107
};
68
108